• UVA11729突击战(汇报和执行任务)


    题意:
          你是一个长官,有一些士兵要跟你先汇报任务后在去执行任务,每次只能接受一个人的汇报,但是每一时刻可以有多个士兵在执行任务,问所有任务执行完要的最小时间。


    思路:
           按执行任务时间从大到小排序来执行就行了,至于为什么贪心的策略是这个我是这么想的,首先任何一个人执行任务的顺序都不会影响他的汇报和干活时间,还有就是
    (1)如果两个任务的工作时间相等,汇报时间不同,那么他俩的顺序并不影响最终答案,也就是说汇报时间没什么意义。
    (2)如果两个任务的汇报时间相同,工作时间不同,当然是工作时间长的放前面好了<这个可以自己画个图看看>,
    (1)+(2)我们可以采取以工作时间长的优先工作的贪心策略。


    #include<stdio.h>
    #include<algorithm>

    #define N 1000 + 5

    using namespace std;

    typedef struct
    {
       int a ,b;
    }NODE;

    NODE node[N];


    bool camp(NODE a ,NODE b)

    {
       return a.b > b.b;
    }

    int main ()
    {
       int n ,i ,Ans ,Sum ,cas = 1;
       while(~scanf("%d" ,&n) && n)
       {
          for(i = 1 ;i <= n ;i ++)
          scanf("%d %d" ,&node[i].a ,&node[i].b);
          sort(node + 1 ,node + n + 1 ,camp);
          Ans = Sum = 0;
          for(i = 1 ;i <= n ;i ++)
          {
             Sum += node[i].a;
             Ans = Ans < Sum + node[i].b ? Sum + node[i].b : Ans;
          }
          printf("Case %d: %d " ,cas ++ ,Ans);
       }
       return 0;
    }





  • 相关阅读:
    将cvs迁移到svn
    wincvs,cvs,svn
    Open Source Camp 北京 2008技术交流盛会 感悟
    21,22,23,24日外出纪要
    10.31,11.1外出纪要
    虚拟经济区一行有感
    29,30号活动预告
    ror 2.1.2migration
    netbeans 6.5 release
    [转载]ruby on rails 每周精选二
  • 原文地址:https://www.cnblogs.com/csnd/p/12062691.html
Copyright © 2020-2023  润新知