dp训练第13题 HDU1114 Piggy-Bank 完全背包,满包

xiaoxiao2021-02-28  36

T组数据,每组给定背包体积V(10000),物品种类N(500),每种物品的价值value和体积volume. 装满背包,求最小价值,存在无解.

这个题使用的是从前转移,注意满包问题需要设置非法状态,从前转移的非法状态同理continue. 这个题求最小值,所以非法状态设置为INT_MAX.

int t=read(); while(t--) { int v1=read(),v2=read(),v=v2-v1,n=read(); for(int i=1;i<=n;i++) value[i]=read(),volume[i]=read(); for(int i=1;i<=v;i++) dp[i]=INT_MAX; dp[0]=0; for(int i=1;i<=n;i++) for(int j=volume[i];j<=v;j++) { if(dp[j-volume[i]]==INT_MAX) continue; dp[j]=min(dp[j],dp[j-volume[i]]+value[i]); } if(dp[v]==INT_MAX) printf("This is impossible.\n"); else printf("The minimum amount of money in the piggy-bank is %d.\n",dp[v] ); }
转载请注明原文地址: https://www.6miu.com/read-2630242.html

最新回复(0)