题目传送门:P2732 [USACO3.3]商店购物 Shopping Offers
这道题乍一看,压根看不懂,再看,看懂题了,第三眼,发现是动规,冥思苦想了半天想出来一个特别暴力的办法
首先我瞄准了小数据,最多只会有 5 种,所以我决定直接五维 dp
f [ i ] [ j ] [ k ] [ l ] [ m ] f[i][j][k][l][m] f[i][j][k][l][m] 表示在第一个物品有 i i i 个,表示在第二个物品有 j j j 个,表示在第三个物品有 k k k 个,表示在第四个物品有 l l l 个,表示在第五个物品有 m m m 个,的情况下的最少费用,于是剩下的就是有手就行的完全背包
但是呢我们发现它还有一个烦人的编号,怎么处理呢?
我的处理方法类似离散化,把每一个编号对应一个较小的数, l s h [ i ] = = 0 lsh[i]==0 lsh[i]==0 表示当前 i i i 这个编号第一次出现,那么我们开辟一个新的编号,否则 l s h [ i ] lsh[i] lsh[i] 就是这个编号对应