关于消失之物和背包与生成函数

我们知道背包的转移是

for(int j = w[i];j <= n;j++){
  f[j] = f[j] + f[j - w[i]];

而消失之物可以通过撤销来还原。

其实这玩意的本质是。

一个物品体积为 w 的 0/1 背包(要么不选,要么选它)可以用多项式表示为
图片

图片

具体地,当前dp状态是G(x),考虑了物品w后会转移成F(x)。
那么是如何推出来转移是
图片

而撤销操作其实就是F(x) / (1 - x^w)。

(加号,打错了)

因为你考虑G(x)的k次幂的一项,乘上(1 + x^w),1让它保持原状,而w次幂这一项使得G(x)的k-w次幂这一项的系数贡献到了k次幂,所以是fj + gj-w。

posted @ 2025-08-14 20:47  Dreamers_Seve  阅读(7)  评论(0)    收藏  举报