HDU1114Piggy-Bank
题意&思路:
给你存钱罐初始和存钱后的重量E,F,金钱的种类N,每种金钱的价值V和重量W。求最少的价值为多少。
完全背包的模板题,主要注意是他求得是最小值。
代码:
#include<bits/stdc++.h>
const int N=1e5+10;
const int mod=1e7+9;
const int maxn=0x3f3f3f3f;
const int minn=0xc0c0c0c0;
const int inf=99999999;
using namespace std;
int w[600],v[600],dp[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int t;
cin>>t;
while(t--)
{
int b,e,n,i,j;
cin>>b>>e>>n;
for(i=1;i<=n;i++)
cin>>v[i]>>w[i];
for(i=1;i<=e-b;i++)
dp[i]=inf;
for(i=1;i<=n;i++)
for(j=w[i];j<=e-b;j++)
dp[j]=min(dp[j],dp[j-w[i]]+v[i]);
if(dp[e-b]==inf)
cout<<"This is impossible."<<endl;
else
cout<<"The minimum amount of money in the piggy-bank is "<<dp[e-b]<<"."<<endl;
}
return 0;
}