题意:
给出若干种货物及其数量以及价格,然后给出一些优惠信息,一些货物组合在一起的价格一定比它们的原价加起来要低。
现在买到这些货物最少的钱(不能增加货物,即使钱会更少)。
思路:
最多有5种货物,每种货物最多5个。
那么就可以考虑压缩状态,6进制的状态压缩,这样就可以表示每种货物的状态。
然后,对于每一种优惠信息,可以在输入的时候就将其压缩为一种状态,节省大量的时间。
如果说对于所有的优惠信息都不满足的时候,那么就把原价当作优惠信息进行处理,这样即使所有的优惠信息都无法转移,那么原价是一定可以转移的。
dp[i] = min(d[i],dp[j]+cut[k]),i和j均满足输入限制,即所有物品的数量都小于等于输入。
代码:
1 #include 2 #include 3 #include 4 #include