「2018 集训队互测 Day 5」小 H 爱染色

题意简述:

https://loj.ac/problem/2504

题解:

题目要我们求的是 \(\sum_{i=0}^{n-m}F(i)\times( (C_{n-i}^m)^2- (C_{n-i-1}^m)^2)\) ,减去的部分和前面很像。
\(Ans(n)=\sum_{x=0}^{n-m}F(x)\times(C_{n-x}^m)^2\) ,答案即为\(Ans(n)-Ans(n-1)\)
不难发现, \((C_{n-x}^m)^2=(\frac{(n-x)^{\underline{m}}}{m!})^2\) 是关于\(x\)\(m*2\) 次多项式,因此 \(F(x)\times(C_{n-x}^m)^2\)\(m*3\) 次多项式,\(Ans(x)\)\(m*3+1\) 次多项式。
现在我们需要算出\(Ans(x)\)\(0-(3*m+1)\)的值,就可以用插值得到\(Ans(n)\)。题目给了F在\(0-m\)的点值,可以用NTT优化插值求出F在\(0-(3*m+1)\)的点值。组合数也可以\(O(m)\)计算,注意逆元要\(O(m)\)预处理。

代码:

https://loj.ac/submission/683877

posted @ 2019-11-28 17:21  蒟蒻小果冻  阅读(560)  评论(2编辑  收藏  举报