题解:P3462 [POI2007] ODW-Weights

posted on 2024-11-25 14:09:03 | under | source

先将砝码重量排序再去重,至多 \(O(\log V)\) 种取值。

注意到这个倍数条件,可以联想到进制。引入借位的思想,即高位可以分解为若干低位。将每个容器进行进制拆分,尽可能多放高位(较大)的砝码,这是因为可以通过若干次借位得到其它所有分解方案。假如还剩下一些重量边角料那么丢掉即可,完全无用。

显然从小到大放砝码,考虑一个第 \(x\) 位的砝码,假如存在某个容器第 \(x\) 位有容量那么直接放,因为低位不可能影响高位。否则找到贪心地最低一位借位即可。

具体实现只需要将所有数的每一位相加(不进位),然后就能直接处理了。

总结一下:本题重点在于联想到进位,以及其“借位”的思想,通过借位操作,即可覆盖所有可能的操作方案。

posted @ 2026-01-15 08:18  Zwi  阅读(1)  评论(0)    收藏  举报