`
从此醉
  • 浏览: 1044576 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

uva 11729 - Commando War

 
阅读更多

点击打开链接uva 11729


思路:贪心
分析:
1 给定n个人的交待任务的时间和完成任务的时间,要求不能同时给两个人交代任务,但是可以多人同时去做任务,求最短的完成任务的时间
2 根据贪心的原则,我们知道执行时间比较长的任务必须先交待,于是我们只要对这n个任务按照完成任务的时间进行排序,然后枚举n个人进去求解即可。

代码:

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

const int MAXN = 1010;
struct Node{
   int b;
   int j;
   bool operator<(const Node& tmp)const{
      if(j > tmp.j)
        return true;
      if(j == tmp.j && b < tmp.b)
        return true;
      return false;
   }
};
int n;
Node node[MAXN];

int main(){
    int Case = 1;
    while(scanf("%d" , &n) && n){
        for(int i = 0 ; i < n ; i++)
           scanf("%d%d" , &node[i].b , &node[i].j);
        sort(node , node+n);
        int ans , tmp;
        tmp = ans = 0;
        for(int i = 0 ; i < n ; i++){
           tmp += node[i].b;//当前任务的开始的执行时间
           ans = max(ans , tmp+node[i].j);//更新任务的最晚结束的时间
        }
        printf("Case %d: %d\n" , Case++ , ans);
    }
    return 0;

}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics