Commando War UVA - 11729

xiaoxiao2021-02-28  105

传送门

水~~~~

题目大意:你给n个士兵安排任务,每个士兵安排任务的时间为bi 执行时间为ji  ,同一时间只能给一个士兵安排任务,但是士兵执行任务不妨碍给其他士兵安排和执行。求出最短的时间。

解题思路:贪心,无论怎样,执行时间长的就要先安排,因为安排了其他的,他就是最后,所以把所有最后完成的都提到前面,先执行,因此排序即可。

AC代码:

#include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct work { int b, j; bool operator< (work a) { return this->j > a.j; } } A[1005]; int main() { int n; int Case = 0; while(scanf("%d", &n) && n) { for(int i=0; i<n; i++) scanf("%d%d", &A[i].b, &A[i].j); sort(A, A+n); int cur = 0, max_time = 0; for(int i=0; i<n; i++) { cur += A[i].b; //更新当前时间 max_time = max(max_time, cur + A[i].j); //更新结束时间 } printf("Case %d: %d\n", ++Case, max_time); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-44993.html

最新回复(0)