@SovietPower
2019-03-11T14:43:58.000000Z
字数 3023
阅读 1397
其它
感觉网上大部分题解对我这种数学基础差的人来说十分不友好...(虽然理解后也觉得没有那么难)结合两篇写的比较好的详细写一写。如果有错要指出啊QAQ
https://blog.csdn.net/smallsxj/article/details/73205569
https://www.cnblogs.com/wujiechao/p/7781140.html
首先题目要求输出精确的小数,由下面的推导可知答案要么是整数,要么是一位小数,不会是什么的。
对讨论,先以为例,假设期望异或和是,把它二进制拆分,每一位记为,那么答案是。
那么对于,它的贡献是,是两位都为的方案数。
那么用表示第个数二进制拆分后的第位,表示这个数是否存在于选出的集合中,求位都为的方案数,可以列个方程组:
(个人感觉这里除去的方程的右式应该是吧,那篇博客里写的是)
解这个方程组,可以发现只会有个是有唯一解的,其它个都有两解。所以方案数为,贡献就为。
当时,,所以。
当时,,依旧有。
扩展到的情况,设选出的位有位是互不相同的,设为,那么方程组中右式为的等式有个,且,所以,贡献。
时,显然也成立。
综上,答案要么是整数,要么是一位小数。
其次要注意的是数据范围。答案小于,那么似乎就有,。
但是个人认为,比如,,但是存在也是可以的,因为毕竟是求平均值,多一位还是可能被拉低到下一位去的。所以应该是(需要unsigned long long
)。
然而没见到有人这么写的(写范围的都是)...那我就不知道为啥都开的unsigned long long
了。
看了下数据,确实最大值是18446727131960884031
。(答案是 233好强大)
考虑怎么做。对分别求解。
:
对每一位分别考虑。设某一位为的数有个,为的有个,那么选出奇数个该位为的方案数是:,偶数个的方案数是。
而
也就是选出该位为的数的个数为奇数和偶数的概率是一样的。那么只要,该位为为的概率是一样的。
所以求一下哪些位上出现过,加起来除以就好了。
:
上面说了答案可以写成。可以直接枚举。
为的概率和时的情况一样,如果存在一个数第位为,那么就是,否则是。所以如果存在数第位不为且存在数第位不为,那么贡献就是。
需要注意的是如果每个数位都相同且至少存在一个数满足位不为,那么为是同时出现的,概率是。
:
此时,线性基中的元素个数不超过,所以可以直接枚举线性基中元素集合(设线性基元素个数为)。
线性基中每个子集出现的概率都是,求出子集异或和后除一下即可。
需要注意的是除之前是可以超过的。需要把表示成。
因为有。
证明:令,那么等式左边,等式右边。
正睿OI联赛停课训练day10AM B
很简单的DP是表示当前挂了个人,小R受到次攻击的概率。转移时枚举这次攻击挂了多少人。这样是的。
怎么优化呢。因为攻击是无差别的,不妨直接令表示第轮时,受到次攻击的概率。转移为,如果还没出局(那么它受到过次攻击),就让他出局并攻击一次剩下所有人;否则如果在之前的次攻击中挂了,就不攻击其他人。
所以有,其中。
对于,