题目:hdu1114
题意:一个背包,求装满状态下能乘的最小价值
解答:完全背包~~~
//完全背包
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn = 550;
const int MAXN = 10010;
const int INF = 0x3f3f3f3f;
struct Goods
{
int w,v;
};
Goods goods[maxn];
int dp[MAXN];
int main()
{
int T,E,F,N,W;
scanf("%d",&T);
while(T--)
{
memset(dp,0,sizeof(dp));
scanf("%d%d",&E,&F);
W = F - E;
for(int i = 0;i <= W;i++)
dp[i] = INF;
dp[0] = 0;///!!!
scanf("%d",&N);
for(int i = 1;i <= N;i++)
scanf("%d%d",&goods[i].v,&goods[i].w);
for(int i = 1;i <= N;i++)
for(int j = 0;j <= W;j++)
if(j >= goods[i].w)
dp[j] = min(dp[j],dp[j-goods[i].w]+goods[i].v);
if(dp[W] == INF)
printf("This is impossible.\n");
else
printf("The minimum amount of money in the piggy-bank is %d.\n",dp[W]);
}
return 0;
}