hdu1114 Piggy-Bank(完全背包)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXN 505
#define MAXM 10005
#define INF 999999 //晕,99999也WA
int weight[MAXN], value[MAXN];
int n, f[MAXM];
inline int getMin(int a, int b)
{
return a < b ? a : b;
}
inline void CompletePack(int w, int v)
{
for(int j = w; j <= n; j++)
{
f[j] = getMin(f[j], f[j - w] + v);
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("indata.txt", "r", stdin);
#endif
int T;
scanf("%d", &T);
while(T--)
{
int i, t;
scanf("%d %d", &t, &n);
n -= t;
scanf("%d", &t);
for(i = 1; i <= t; i++)
{
scanf("%d %d", &value[i], &weight[i]);
}
for(i = 1; i <= n; i++) f[i] = INF;
f[0] = 0;
for(i = 1; i <= t; i++)
{
CompletePack(weight[i], value[i]);
}
if(f[n] < INF) printf("The minimum amount of money in the piggy-bank is %d.\n", f[n]);
else printf("This is impossible.\n");
}
return 0;
}
浙公网安备 33010602011771号