[HNOI2011]卡农

[HNOI2011]卡农 [* easy]

问题等价于计算:

\[\prod_{S\ne \varnothing} (1+x^{S}y)[x^{\varnothing}y^m] \]

固定 \(y\) 然后取 FWT,不难看出来 \(FWT(1+x^{S}y)_i=(1+(-1)^{i\&S} y)\)

于是每个 \(i\) 处的点值形如 \((1+y)^a(1-y)^b\),我们只需要计算处 \(y^m\) 处所有点的点值就可以做 IFWT 还原了。

由于 \(S\) 取遍所有集合,所以 \(i\) 处的点值只关乎 \(i\) 在二进制下 \(1\) 的数量。

同时,还原的系数为 \(IFWT(FWT(F(x)))_0=\frac{1}{2^n}\sum FWT(F(x))_S\)

换而言之,我们只需要对于二进制下每个 \(i\) 表示二进制下 \(1\) 的数量的求出对应的 \(y^m\) 的系数乘以 \(\binom{n}{i}\) 然后加起来求和乘以 \(\frac{1}{2^n}\) 就是答案了。

不难注意到对于 \(d\)\(1\) 而言,按位与的结果恰好有奇数个 \(1\)\(S\) 的数量为:

\[2^{n-d}\cdot \sum_{i} [i\mod 2=1]\binom{d}{i} \]

等价于:

\[2^{n-d}\cdot \sum_{i} \frac{(-1)^{i+1}+1^{i+1}}{2}\binom{d}{i}=2^{n-d}\bigg(2^{d-1}+0\bigg)=2^{n-1} \]

这个式子仅在 \(d=0\) 时不成立,对应次幂为 \(2^{n}\),所以 FWT 后的点值仅有 \(FWT(F(x))_0\)\(FWT(F(x))_S\) 的区别,此时我们只需要计算:

\[(1+y)^{t-1}(1-y)^t[y^m] \]

于是答案等价于:

\[\frac{1}{2^n}\bigg((1+y)^{2^n-1}[y^m]+(2^n-1)(1+y)^{t-1}(1-y)^{t}[y^m]\bigg) \]

由于只需要计算一项卷积,已经是可以做的了,可以更优么?

其实设 \(F(y)=(1+y)^{t-1}(1-y)^t\) 然后求个导就可以递推了,但是显然这一点也不优美,注意到 \((1+y)(1-y)=(1-y^2)\) 所以答案其实就是 \((1-y)(1-y^2)^{t-1}[y^m]\) 然后分奇偶讨论即可 \(\binom{t-1}{\lfloor{}m/2\rfloor{}}(-1)^{\lceil m/2\rceil}\)

posted @ 2020-11-20 20:35  Soulist  阅读(165)  评论(0)    收藏  举报