C++ 60pts 求助
查看原帖
C++ 60pts 求助
733515
LikablePie79015楼主2024/12/5 13:59

具体思路是,每次都排序,每次选取第二大的时间累加到答案,再消耗同时间的第一大的时间。

#2 #3 #6 #7 WA,其余 AC

Code

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int taskNumber[5];
int taskTime[5][30];
int totalTime;

int main() {
	for (int i = 1; i <= 4; ++i) {
		scanf("%d", &taskNumber[i]);
	}
	
	for (int i = 1; i <= 4; ++i) {
		for (int j = 1; j <= taskNumber[i]; ++j) {
			scanf("%d", &taskTime[i][j]);
		}
	}
	
	for (int i = 1; i <= 4; ++i) {
		while(1) {
			sort(taskTime[i] + 1, taskTime[i] + taskNumber[i] + 1, [](int x, int y){return x > y;});
			if (taskTime[i][2] == 0) break;
			totalTime += taskTime[i][2];
			taskTime[i][1] -= taskTime[i][2];
			taskTime[i][2] = 0;
		}
		totalTime += taskTime[i][1];
	}
	
	printf("%d", totalTime);
	return 0;
}

提交记录

谢谢大佬们!

2024/12/5 13:59
加载中...