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

简单DP79ms1A

Posted by KatrineYang at 2016-09-21 22:49:19 on Problem 1384
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;

int E, F;
int dp[10086];

struct coin{
	int p, w;
};

coin coins[520];

bool compare(const coin &c1, const coin &c2){
	return c1.w < c2.w;
}

int main() {
	int t;
	scanf("%d", &t);
	for(int ii = 0; ii < t; ii++){
		scanf("%d%d", &E, &F);
		F -= E;
		int cn;
		scanf("%d", &cn);
		for(int i = 0; i < cn; i++){
			scanf("%d%d", &coins[i].p, &coins[i].w);
		}
		sort(coins, coins+cn, compare);
		dp[0] = 0;
		for(int i = 1; i <= F; i++) dp[i] = 2147483647;
		for(int i = 1; i <= F; i++){
			int minCost = 2147483647;
			for(int j = 0; j < cn; j++){
				if(coins[j].w>i) break;
				if(dp[i-coins[j].w]==2147483647) continue;
				int tempCost = coins[j].p + dp[i-coins[j].w];
				if(tempCost < minCost) minCost = tempCost;
			}
			dp[i] = minCost;
		}
		if(dp[F] == 2147483647) printf("This is impossible.\n");
		else printf("The minimum amount of money in the piggy-bank is %d.\n", dp[F]);
	}
	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