这道题一眼看去似乎只是个超级简单的01背包,但是再一看数据范围,n和m达到10万,那么O(nm)的算法必定超时。再仔细看,发现物品的体积和价值的数据范围非常小,所有不同的非零体积,价值的组合不过100种,所以可以把原来的10万个物品看成100种物品,每种物品有若干个(输入时计数),那么题目也就从10万个物品做01背包转化成对100种物品做多重背包,用单调队列优化一下,再特判一下体积或价值为0的情况,就AC了
这道题一眼看去似乎只是个超级简单的01背包,但是再一看数据范围,n和m达到10万,那么O(nm)的算法必定超时。再仔细看,发现物品的体积和价值的数据范围非常小,所有不同的非零体积,价值的组合不过100种,所以可以把原来的10万个物品看成100种物品,每种物品有若干个(输入时计数),那么题目也就从10万个物品做01背包转化成对100种物品做多重背包,用单调队列优化一下,再特判一下体积或价值为0的情况,就AC了