您的位置:首页 > 其它

Commando War UVA - 11729

2017-08-06 10:38 429 查看
传送门


水~~~~

题目大意:你给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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: