Piggy-Bank(復習完全背包)
阿新 • • 發佈:2017-06-18
ssi color hdu spa http lan blog stream include
傳送門
題目大意:
有一個存錢的儲存罐,給你它存滿錢之前和之後的重量,和幾類硬幣的面值和重量。
求裝滿儲錢罐時最小能得到多少錢。
題解:完全背包變形。
因為要求最小 一開始賦值大數。
code:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int w1,w2,wi,t,k,f[10002],v[510],w[510]; int main() { scanf("%d",&t); while(t--) { memset(f,0x3f,sizeof(f)); f[0]=0; //** scanf("%d%d",&w1,&w2); wi=w2-w1; scanf("%d",&k); for(int i=1;i<=k;i++) scanf("%d%d",&v[i],&w[i]); for(int i=1;i<=k;i++) for(int j=w[i];j<=wi;j++) f[j]=min(f[j],f[j-w[i]]+v[i]);if(f[wi]==0x3f3f3f3f) printf("This is impossible.\n"); else printf("The minimum amount of money in the piggy-bank is %d.\n",f[wi]); } return 0; }
Piggy-Bank(復習完全背包)