zoukankan      html  css  js  c++  java
  • 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;
    }





  • 相关阅读:
    最先与最后(鲁迅)
    GPS固定数据输出语句($GPGGA)
    网络流量测量软件的设计与实现
    塑料模型毕业设计论文
    周末去牛街!
    周口店猿人遗址!
    总有一些东西让我们泪流满面
    不行了,回去休息
    过完节回到北京了
    算法竞赛专题解析(0)写作计划
  • 原文地址:https://www.cnblogs.com/csnd/p/12062690.html
Copyright © 2011-2022 走看看