1. 程式人生 > 其它 >Divan and bitwise operations

Divan and bitwise operations

這是一道比較綜合的數學題目,光是吧題目看懂就花了我好一會兒時間,先看看題目吧:

 

 

 

 

 

題目分析:對於m段給定連續段的或值,要求出n個數的序列子序列的異或值之和;

 

題解:

這道題,我們先不要把它當作一個數一個數來做,而是要考慮每一位的貢獻值;

考慮二進位制第  位對"陣列所有子序列異或值的和"的貢獻。設  中第  位等於1的個數為  ,從中取奇數個異或後第  位仍為1,對答案有貢獻。所以總貢獻為  。其中  表示從  個數字中取奇數個數字的方案數,  表示取第  位等於0的方案數,  表示每個方案對答案的貢獻。所以總貢獻為  。但是上述前提是  。當  即所有數字第  位都是0時,對答案的貢獻是0。如何判斷  中第  位是否有1?由於每個  至少出現在一個連續段中,將所有段  的或等於  的或。判斷或中是否有1即可。

 

程式碼:Submission #153711607 - Codeforces