| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
加油!!!注意min的细节#include<stdio.h>
#include<stdlib.h>
#include<string.h>
const int maxn = 50005;
int w[maxn], v[maxn],dp[maxn];//w[i] 每种硬币质量 v[i]每种硬币的价值
#define min(a,b) ((a)<(b)?(a):(b))
int main()
{
int t, E, F,n;//E 空罐的质量 F 满罐的质量 1<=E<=F<=10000g n几种硬币 1<=n<=500
scanf("%d", &t);
getchar();
while (t--)
{
scanf("%d%d", &E, &F);
scanf("%d", &n);
memset(dp, 0x3f, sizeof(dp));
dp[0] = 0;
for (int i = 1; i <= n; i++)
{
scanf("%d%d", v + i,w + i);
}
for (int i = 1; i <= n; i++)
{
for (int j = w[i]; j <= F-E; j++)
{
dp[j] = min(dp[j], dp[j - w[i]] + v[i]);
}
}
if (dp[F - E] != dp[50001])
{
printf("The minimum amount of money in the piggy-bank is %d.\n", dp[F - E]);
}
else
{
printf("This is impossible.\n");
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator