1. 程式人生 > >uoj 36 瑪裡苟斯

uoj 36 瑪裡苟斯

【清華集訓2014】瑪裡苟斯 - 題目 - Universal Online Judge

k=1,2,3,4,5各佔20pts是提示

應當分開考慮

k=1

拆位,如果第i位有1,則有1/2的概率xor出來,得到(1<<i)的貢獻

證明考慮若干個有1的數,找到偶數個1的概率

 

k=2

還是拆位

然後考慮二進位制:(a1+a2+a3+...+ak)*(a1+a2+a3+..+ak)

根據完全平方展開

存在ai的平方和,還有所有兩項的乘積再*2

分開考慮貢獻的期望

a^2:1/2

2ab:1/4

a,b都是有1的位

注意,如果a,b出現的每一次都屬於同一個數,那麼概率是1/2

暴力列舉即可60^2

 

k>=3

不能再展開了,項數多而複雜。

 

另闢蹊徑

發現,如果一個數可以被其他的數xor表示,那麼這個數的存在與否不影響答案

有沒有這個數的兩種情況的所有組合都是相同的。

所以去掉這些數

線性基

只剩60個數

但是有答案<2^63

所以每個數最大2^20左右

否則有一個2^30,就至少貢獻2^(30k)/2的值,直接爆

 

所以只剩下20個數,k越大越少

dfs爆搜即可

 

但是由於/2的存在,所以可能會爆long long

unsigned long long即可。