专栏文章

挂钩's trick

个人记录参与者 1已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@mio8e3el
此快照首次捕获于
2025/12/02 15:02
3 个月前
此快照最后确认于
2025/12/02 15:02
3 个月前
查看原文
名字是我乱取的。来源。为什么是挂饰啊w,不管了。
nn 个物品,每个物品能获得 aia_i 个 A,bib_i 个 B,给定 x,yx,y,问最少物品数使得 ax\sum a \ge xby\sum b \ge y
fi,a,bf_{i,a,b} 表示考虑前 ii 个物品,获得了 a\ge a 个 A,b\ge b 个 B,转移的时候后面的两维和 0 取 max,事实上相当于把负数下标在 0 处记录了。
CPP
memset(f, 0x3f, sizeof f); f[0][0][0] = 0;
f[i][j][k] = min(f[i - 1][j][k], f[i - 1][max(j - a[i], 0ll)][max(k - b[i], 0ll)] + 1);
面对这种 \ge 型的背包问题,通过这种状态设计能在保证时空复杂度的情况下计算答案。

评论

1 条评论,欢迎与作者交流。

正在加载评论...