题意
给定(k,c),再给定长度为(n)的序列((1le nle 2^c-k),(kle a_ile 2^c-1))
进行(k)次操作,每次选择一个位置给(a_i-1)
问(k)次操作后,最后异或和为(x)的概率为多少
输出(x)分别为(0sim 2^c-1)时的答案
(k,cle 16)
做法
求方案数,写成指数多项式的形式。另外对常数项(x),定义(x^i imes x^j=x^{ioplus j})
(egin{aligned}
F(z)=prodlimits_{i=1}^n(sumlimits_{j=0}^k x^{a_i-koplus a_i}frac{z^j}{j!})
end{aligned})
对(x)沃什变换,对每一位单独处理
暴力计算是(O(2^ck^2n+2^cc))的
我们发现,对于序列({b_i=a-ioplus a}),对于题目给出的限制,最多只有(192)种不同的序列
这样直接算是(O(2^ck^2192))的,不过这样还是过不了
有个小优化,对于位置(i),可以把({c_k=ioplus k\% 2})相同的再压一下,然后用(k^2)算某多项式的次幂
然后总共只要算(1400490)个不同的多项式
复杂度(O(1400490k^2))