具体思路是,每次都排序,每次选取第二大的时间累加到答案,再消耗同时间的第一大的时间。
#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;
}
提交记录
谢谢大佬们!