Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

加油!!!注意min的细节

Posted by IenhanceMa at 2017-02-09 19:44:32 on Problem 1384
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator