[DP] [二进制分组] 逃亡的准备

题目传送门
如果是普通多重背包的话时间复杂度是 O(Vm) 的,过不去……
于是考虑二进制分组,即将 mi 写成 2i+k 的形式,这样由于任意正整数可以写成一系列二进制的和,所以正确性可以保证。
这样,每一组的物品数由 mi 降至了 log2mi ,这样再做01背包,复杂度是 O(Vlog2mi) ,这样就很滋磁了!
当然还有单调队列优化多重背包至 O(Vn) 的,只要题目不卡二进制优化这个单调队列优化也没什么用途……(不过真有卡的题……)
Code

猜你喜欢

转载自blog.csdn.net/HeRaNO/article/details/78290533