题解:P3462 [POI2007] ODW-Weights
posted on 2024-11-25 14:09:03 | under | source
先将砝码重量排序再去重,至多 \(O(\log V)\) 种取值。
注意到这个倍数条件,可以联想到进制。引入借位的思想,即高位可以分解为若干低位。将每个容器进行进制拆分,尽可能多放高位(较大)的砝码,这是因为可以通过若干次借位得到其它所有分解方案。假如还剩下一些重量边角料那么丢掉即可,完全无用。
显然从小到大放砝码,考虑一个第 \(x\) 位的砝码,假如存在某个容器第 \(x\) 位有容量那么直接放,因为低位不可能影响高位。否则找到贪心地最低一位借位即可。
具体实现只需要将所有数的每一位相加(不进位),然后就能直接处理了。
总结一下:本题重点在于联想到进位,以及其“借位”的思想,通过借位操作,即可覆盖所有可能的操作方案。

浙公网安备 33010602011771号