「总结」多项式生成函数例题(1)

1.礼物
先给你们来个简单点的。
http://hzoj.com/contest/220/problem/1
那么其实就是在求最小的:
\[\begin{array}{rcl}ans&=&\sum\limits_{i=1}^{n}(x_i-y_i+c)^2\\&=&\sum\limits_{i=1}^{n}(x_i-y_i)^2+2(x_i-y_i)c+c^2\end{array}\]
可以发现贡献分成了两部分。
一部分的变量是\(c\)另一部分是\(x,y\)
这样分别计算最小值即可。
右边的那个直接带入\(c\in[-100,100]\)即可。
左边的再接着化式子。
\[\sum\limits_{i=1}^{n}x_i^2+y_i^2-2x_iy_i\]
前面的可以直接求。
只需要求后面的部分:
\[\sum\limits_{i=1}^{n}x_iy_i\]
的最大值。
\[\sum\limits_{i=1}^{n}x_{(i+k)mod\ n}y_i\]
发现卷积的影子了。
我们将\(y\)复制一次接到后面,\(x\)直接翻转。
做一次多项式乘法。
\(i+n\)项的系数,就是错位\(i\)次之后的乘法值。
这样问题就在\(O(nlogn)\)复杂度内解决了。

2.染色
http://hzoj.com/contest/126/problem/9
题解直接丢链接:https://www.cnblogs.com/Lrefrain/p/11644603.html

3.城市规划
http://hzoj.com/contest/126/problem/10
这个题其实也不难。
首先根据一个套路我们枚举和\(1\)在同一个联通块内的点的个数。
这样可以得到一个补集容斥的式子:
\[dp[n]=2^{\binom{n}{2}}-\sum\limits_{i=1}^{n-1}\binom{n-1}{i-1}2^{\binom{n-i}{2}}dp[i]\]
随便化一下出卷积式就行了。
但是发现是自己卷自己。
分治\(FFT\)解决。
这个分治很简单自己去\(yy\)吧。

4.图的价值
http://hzoj.com/contest/126/problem/11
鉴于大部分人都不会斯特林数。
这里给出一个公式:
\[x^m=\sum\limits_{i=0}^{m}\begin{Bmatrix}m\\i\end{Bmatrix}x^{\underline i}\]

然后愉快的开始推式子吧!
首先考虑每个点的贡献,就可以得到如下的答案:
\[ans=n2^{\binom{n-1}{2}}\sum\limits_{i=1}^{n-1}\binom{n-1}{i}i^k\]
\[F(n)=\sum\limits_{i=1}^{n}\binom{n}{i}i^k\]
\[\begin{aligned}\\ F(n)&=\sum\limits_{i=1}^{n}\binom{n}{i}i^k\\ &=\sum\limits_{i=1}^{n}\binom{n}{i}\sum\limits_{j=0}^{k}\begin{Bmatrix}k\\j\end{Bmatrix}i^{\underline j}\\ &=\sum\limits_{i=1}^{n}\sum\limits_{j=0}^{k}\begin{Bmatrix}k\\j\end{Bmatrix}\binom{n}{i}\binom{j}{i}j!\\ &=\sum\limits_{j=0}^{k}j!\begin{Bmatrix}k\\j\end{Bmatrix}\sum\limits_{i=0}^{n}\binom{n}{i}\binom{i}{j}\\ &=\sum\limits_{j=0}^{k}j!\begin{Bmatrix}k\\j\end{Bmatrix}\sum\limits_{i=0}^{n}\binom{n}{j}\binom{n-i}{j-i}\\ &=\sum\limits_{j=0}^{k}j!\begin{Bmatrix}k\\j\end{Bmatrix}\binom{n}{j}2^{n-j}\\ &=\sum\limits_{j=0}^{k}j!\frac{n!}{j!(n-j)!}2^{n-j}\begin{Bmatrix}k\\j\end{Bmatrix}\\ &=n!\sum\limits_{j=0}^{k}\frac{2^{n-j}}{(n-j)!}\begin{Bmatrix}k\\j\end{Bmatrix}\\ \end{aligned}\]
卷积形式出现了。
现在还有一个问题。
第二类斯特林数怎么求?
第二类斯特林数\(\begin{Bmatrix}n\\k\end{Bmatrix}\)的含义是,\(n\)个物品分成\(k\)个没有标号的集合的方案数,保证集合非空。
这样我们就可以考虑容斥出这个东西。
考虑二项式反演。
我们一共有\(n\)个元素和\(k\)个集合,来模拟划分的过程来满足0个非空这个条件。
我们设\(g(m)\)为划分中至少\(m\)个空集合的方案数,\(f(m)\)为恰好有\(m\)个。
\[g(m)=\binom{k}{m}(k-m)^n\]
\[g(m)=\sum\limits_{i=m}^{k}\binom{k}{i}f(i)\]
二项式反演得到:
\[f(m)=\sum\limits_{i=m}^{k}(-1)^{i-m}\binom{k}{i}g(i)\]
\[f(0)=\sum\limits_{i=0}^{k}(-1)^i\binom{k}{i}(k-i)^m\]
那么:
\[\begin{aligned}\\ \begin{Bmatrix}n\\k\end{Bmatrix}&=\frac{f(0)}{k!}\\ &=\frac{1}{k!}\sum\limits_{i=0}^{k}(-1)^k\binom{k}{i}(k-i)^m\\ &=\frac{1}{k!}\sum\limits_{i=0}^{k}(-1)^k\frac{k!}{i!(k-i)!}(k-i)^m\\ &=\sum\limits_{i=0}^{j}\frac{(-1)^i}{i!}\frac{(k-i)^m}{(k-i)!}\\ \end{aligned}\]
这样也是卷积了。
可以\(O(nlogn)\)求出一行的第二类斯特林数。
那么把斯特林数代入上面的式子一起卷积即可。

猜你喜欢

转载自www.cnblogs.com/Lrefrain/p/12024175.html