USACO 3.1 Score Inflation (完全揹包)

#include <stdio.h>
#define DEBUG 1
#define TESTCASES 9
#define MAX 10000

int contestMinutes, numOfClasses;
int pointArray[MAX + 1];
int minuteArray[MAX + 1];
int maxPoints[MAX + 1];

int main(){
#if DEBUG
	int testCase;
	for (testCase = 1; testCase <= TESTCASES; testCase++){
		char inputFileName[20] = "inputx.txt";
		inputFileName[5] = '1' +  (testCase - 1);
		freopen(inputFileName, "r", stdin);
		printf("\n#%d\n", testCase);
#endif
	
	scanf("%d%d", &contestMinutes, &numOfClasses);
	int i;
	for (i = 1; i <= numOfClasses; i++)
		scanf("%d%d", &pointArray[i], &minuteArray[i]);

	int preClasses, minutesLimit;
	for (minutesLimit = 1; minutesLimit <= contestMinutes; minutesLimit++)
		maxPoints[minutesLimit] = 0;

	int lowerMinutes, temp;
	for (preClasses = 1; preClasses <= numOfClasses; preClasses++){
		lowerMinutes = minuteArray[preClasses];
		for (minutesLimit = lowerMinutes; minutesLimit <= contestMinutes; minutesLimit++){
			temp = maxPoints[minutesLimit - lowerMinutes] + pointArray[preClasses];
			if (temp > maxPoints[minutesLimit])
				maxPoints[minutesLimit] = temp;
		}
	}

	printf("%d\n", maxPoints[contestMinutes]);

#if DEBUG
	}
#endif
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章