记一道 Naive 的计数题

题意

对于一个集合 \(S\),定义 \(F(S,x)=\sum_{T\subset S}G(T)\times x^{|T|}\),其中 \(G(T)=\bigoplus_{x\in T}x\),空集的异或和为 \(0\)

\(Q\) 个询问,每次给出区间 \([l,r]\)\(x\),令 \(S\) 是序列的第 \(l\sim r\) 个元素构成的集合,求 \(F(S,x)\)

答案对 \(998244353\) 取模。

\(\texttt{Data Range:}n\leq 10^5,Q\leq 10^5\)

分析

可以想到拆位。考虑区间 \([l,r]\) 内,第 \(k\) 位上为 \(1\) 的数有 \(m\) 个。则对于第 \(k\) 位,显然有贡献式:

\[\left(\sum_{j\bmod2=1}\sum_{i=0}^{n-m}\binom{m}{j}\binom{n-m}{i}x^{i+j}\right)\times2^k \]

提取无关项,可以将柿子化为两个无关的部分从而分别计算。

\[\left(\left(\sum_{j\bmod 2=1}\binom{m}{j}x^j\right)\times\left(\sum_{i=0}^{n-m}\binom{n-m}{i}\times x^i\right)\right)\times2^k \]

右半部分的和式是非常好处理的,难以处理的是左半部分。

这个时候我们想到一个经典恒等式:

\[\sum_{i\bmod 2=0}\binom{n}{i}=\sum_{i\bmod 2=1}\binom{n}{i} \]

这个恒等式是通过构造 \((1-1)^n\) 从而用二项式定理求解得到的。我们也可以用类似的方式构造 \((x-1)^n\) ,并且与 \((x+1)^n\) 作和或作差得到左半部分的和式。值得注意的是,\(n\) 的奇偶性会对值造成影响,需要分类讨论。

这里放上结论:

\[\begin{cases} \sum\limits_{i\bmod 2=1}\binom{n}{i}\times x^i=\frac{(x+1)^n-(x-1)^n}{2},\text{if } n\bmod 2=0 \\ \sum\limits_{i\bmod 2=1}\binom{n}{i}\times x^i=\frac{(x+1)^n+(x-1)^n}{2},\text{if }n\bmod 2=1 \end{cases} \]

很轻松的就可以算出最终的答案,时间复杂度为 \(O(n \log^2 P)\),其中 \(P\) 是模数。

posted @ 2020-11-02 22:44  tommymio  阅读(86)  评论(0编辑  收藏  举报