LGP5289口胡

考虑每个城市的 GF,乘起来就是答案的 GF。

很显然 \(C_0,C_1\) 钦定的只是某个维度的上下界,所以只需要记住一个派系和一个阵营的人数即可。

每个城市要求相同阵营的话,那么一个城市的 GF \(F(x)\) 可以写成 \(F(x)=y^kx^a\times F_1(x)+x^b\times F_2(x)\)

注意到这是一个二维背包,如果直接算的话将会收获 \(O(nM^2)\) 的好成绩。

看一眼数据范围有 \(s_i\leq 10,k\leq 30\),考虑在这里动手脚。

卷一个 \(\prod_{i=1}^{10}(1+x^i)^{f_i}\) 非常容易,对于每个 \(1+x^i\) 使用类似背包的方法即可 \(O(10M)\)。这一部分复杂度为 \(O(k10M^2)\)

注意到 \(F_1(x)\)\(F_2(x)\) 存在公因式,可以将其提出来然后当做无限制的处理。剩下的 \(y^kF_1(x)+F_2(x)\)。这里的 \(F_1(x),F_2(x)\) 的总次数只有 \(\sum s_i\),可以单独拉出来使用背包处理。

最后还有一个卷积,使用前缀和即可。

单次复杂度 \(O(sk^2M+nM)\)

posted @ 2022-07-11 09:52  Prean  阅读(17)  评论(0编辑  收藏  举报
var canShowAdsense=function(){return !!0};