uva 11729 Commando War

来源:互联网 发布:金螳螂网络采购平台 编辑:程序博客网 时间:2024/05/17 01:06

题目链接:点击打开链接

题目大意:有n个部下,每个部下需要完成一些任务.第i个部下需要bi分钟交代任务,然后他会独立,无间断地执行ji分钟后完成任务.你需要选择交代任务的顺序,使得所有任务尽早执行完毕.

思路:贪心

分析:按照执行时间ji进行排序,执行时间短的在前.

代码:

#include <cstdio>#include <vector>#include <algorithm>using namespace std;struct Soldier{int brief, job;Soldier(int b, int j) { brief = b; job = j; }};bool compare(Soldier s1, Soldier s2){return s1.job > s2.job;}int main(){int n, b, j;int i;int last_brief_end, task_end;int cases = 1;while (scanf("%d", &n) && n != 0){last_brief_end = 0;task_end = 0;vector<Soldier> army;for (i = 0; i < n; i++) {scanf("%d %d", &b, &j);Soldier s(b, j);army.push_back(s);}sort(army.begin(), army.end(), compare);//printf("%d\n", army.at(0).job);for (i = 0; i < n; i++) {if (i != 0)last_brief_end += army.at(i-1).brief;task_end = max(task_end, last_brief_end + army.at(i).brief + army.at(i).job);}printf("Case %d: %d\n", cases++, task_end);}return 0;}


原创粉丝点击