首页 > 技术文章 > LOJ3120「CTS2019 | CTSC2019」珍珠

chasedeath 2020-05-21 13:13 原文

LOJ3120「CTS2019 | CTSC2019」珍珠

只是想要祭奠做的时候死去的我

约定下文中的\(d\)为题目中的\(D\)

Part1

先从最最暴力的定义转移(可以跳过这个)

\(S\)表示个数为奇数的颜色集合

转移多项式(集合幂指数)\(F(x)=\sum_0^d x^{\{i\}}\)

\(\text{FWT}\)得到

\(F'(x)=\sum (d-2|S|)x^S\)

\((F(x)^n)'=\sum (d-2|S|)^nx^S\)

\(\text{IFWT}\)得到

$2^d F(x)^n=\sum_S \sum_T (-1)^{|S\cap T|}(d-2|T|)^n x^{S} $

答案就是

\(2^d Ans=\sum_S\sum_T(-1)^{|S\cap T|}(d-2|T|)^n[|S|\leq Lim]\)

如果枚举\(|S|,|T|,|S\cap T|\)进行统计,会出现3个元,无法直接优化到\(O(n\log n)\)


Part2

设最后得到每一种颜色的个数为\(c_i,\sum c_i=n\)

方案数就是\(\frac{n!}{\Pi c_i!}\),很符合指数型生成函数吧

考虑最朴素的生成函数表示法,考虑每种颜色的选的个数

个数无限制的生成函数\(F_0(x)=\sum \frac{x^i}{i!}=e^x\)

个数为奇数的生成函数\(F_1(x)=\frac{x^{1}}{1!}+\frac{x^{3}}{3!}+\cdots=\frac{e^x-e^{-x}}{2}\)

个数为偶数的生成函数\(F_2(x)=\frac{x^0}{0!}+\frac{x^2}{2!}+\cdots=\sum \frac{e^x+e^{-x}}{2}\)

\(F_1^i=2^{-i}\sum (-1)^jC(i,j)e^{(i-2j)x}\)

\(F_2^i=2^{-i}\sum C(i,j)e^{(i-2j)x}\)

设选中\(i\)个奇数的答案为\(G_i\)

\(G_i=n!C(n,i)[x^n]F_1^iF_2^{d-i}\)

\(=n!C(n,i)[x^n]2^{-d}\sum_j\sum_k C(i,j)(-1)^je^{(i-2j)x} C(n-i,k)e^{(n-i-2k)x}\)

\(e^{ax}=\sum \frac{(ax)^i}{i!}\),约去\(n!\)

\(=C(n,i)[x^n]2^{-d}\sum_j\sum_k C(i,j)C(n-i,k)(-1)^j (n-2k-2j)^n\)

诶好像和Part1一样。。。

暴毙结束。。。。


Part3

上面这两种方法都要枚举三个元,无法优化,所以考虑先重复计算,再容斥掉

计算\(\ge i\)个方案数,然后容斥回去

设最终答案序列为\(H\)

我们可以快速求出选中\(i\)个奇数且带重复的方案数\(G_i\)

\(G_i=\sum C(j,i)H_j=[x^n]C(d,i)F_1(x)^iF_0(x)^{d-i}\)(强制选\(i\)个剩下未知)

\(G_i=C(d,i) \cdot n! \cdot [x^n]\sum (-1)^je^{(d-2j)x}\cdot C(i,j)\cdot {2^{-i}}\)

\(e^{ax}=\sum \frac{(ax)^i}{i!}\),约去\(n!\)

\(G_i=C(d,i) \cdot \sum (-1)^j(d-2j)^n\cdot C(i,j)\cdot {2^{-i}}\)

卷积一次可以得到\(G\)

最后的容斥就是二项式反演

\(H_i=\sum_{j\ge i}(-1)^{j-i}G_jC(j,i)\)

再卷积求出\(H\)

推荐阅读