【清华集训2014】玛里苟斯
题意
做法
结论1:结果是整数或整数+\(\frac{1}{2}\)
证明:
假设\(n\)个数对应线性基的大小为\(base\)
考虑对于任意能表示出来的数\(x\),对于除线性基外元素的任意\(2^{n-base}\)种取法后,在线性基里取,都有唯一一种方法将\(x\)表示出来
故每个数出现的方案数均为\(2^{n-base}\),出现的概率为\(2^{-base}\)
则\(ans=(\sum\limits_{x能被线性基表示}x^k)\times 2^{-base}\)
\(x^k=(\sum 2^{x_i})^k\),其中\(x_i\)表示的是\(x\)的有效位
每个括号内选取一个单项式,即\(2^{\sum\limits_{i=1}^k a_i}\)
若\(|\{a\}|=c\),我们抛开其他所有位置,单纯看\(\{a\}\),有\(2^{base-c}\)个\(x\)中有\(\{a\}\),贡献就为\(2^{\sum\limits_{i=1}^k a_i}\times 2^{base-c}\times 2^{base}=2^{\sum\limits_{i=1}^k a_i}\times 2^{-c}\)
而\(|\{a\}|=c\),若不是整数,只有两种情况:\(c=1,\{a\}=\{0\}\);\(c=2,\{a\}=\{0,1\}\)
再来考虑这道题
- \(k=1\):
单独考虑每一位上的\(1\),我们都有\(2^{n-base}\times 2^{base-1}=2^{n-1}\)中方法取到,概率为\(2^{-1}\)
答案即为\(\sum 2^i\times 2^{-1}\)(其中\(i\)为线性基上存在第\(i\)位) - \(k=2\):
\(ans=\sum\sum 2^{i+j}P_{i,j}\)(\(P_{i,j}\)是系数),与\(k=1\)类似 - \(k\ge 3\):
考虑边界情况\(k=3\),由于答案\(<2^{63}\),仅考虑\(\{a\}=1,\{a\}=\{base-1\}\)的情况
\(2^{3(base-1)}\times 2^{-1}<2^{63}\),故\(base\le 22\),而因为我们仅考虑了一种可能的\(x\),所以实际情况的\(base\)比这还要小很多
所以我们可以暴力枚举\(2^{base}\)种可能的\(x\),再统计\(\sum x^k\times 2^{-base}\)
而\(x^k\)可能会很大,但\(x^k\times 2^{-base}<2^{63}\),所以我们实际在程序中将\(x\)表示为\(a\times 2^{-base}+b\)的形式