题意

有 500,100,50,10,5,1 这些面额的纸币,有 $X$ 块钱,使用最少的纸币数表示的。

然后有一些物品,每种只有一个,有费用。每次你可以选择一些没买过的买,付一定的钱,用最小的纸币数会找你钱。

要求最大化最后 1 元纸币的数量。

$n\leq10^5,X\leq10^{14}$

口胡

有性质是一次只会买一个。

然后有 $\mathcal{O}(n^2)$ 的背包做法,考虑优化。注意到贡献其实只有 0 到 4。就不用价格做状态,用价值做状态。

按费用从小到大选。贪心改变贡献选的数量。

那设置一个波动 $B$ ,如果贪心选的数量是 $x$ ,就只需要 DP $[x-B, x+B]$ 的结果。复杂度 $\mathcal{O}(n+B^2)$

EOF

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。

博客信息

作者
Jayun
时间
2023-11-07 07:30:52
博客类型