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即可。

原文地址:https://www.cnblogs.com/Miracevin/p/10226112.html