首先把 c 看做一个集合,然后定义 C(x)=∑i∈cxi。
再设 fm 为总权值和为 m 时的答案。
根据某些 DP 套路,可以得到 fm=1+∑i∈cm−i∑j=0fjfm−i−j
令 F(x) 为 f 的生成函数,则根据上式有 F(x)=CF2(x)+1CF2(x)−F(x)+1=0F(x)=1±√1−4C2C
由于 0∉c,f0=1 所以 C(0)=0,F(0)=1。
据此可知应取负号,即 F(x)=1−√1−4C2C
然后就发现似乎就可做了,但是 C 的常数项为 0,有点麻烦。
考虑用类似分母有理化的方法对分子有理化试试。
易得 F(x)=21+√1−4C
然后就完全可做了。
贴个多项式开根和多项求逆就做完了。
代码:
1 |
|