• UVa11729


    解题思路:很明显,执行时间较长的任务应该先交代。按照j从大到小的顺序,

          如果j相同,b的大小是不影响的。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const int maxn = 1005;
     6 #define inf 0x3f3f3f3f
     7 
     8 struct node{
     9     int b, j;
    10 }p[maxn];
    11 
    12 int cmp(node A, node B)
    13 {
    14     return A.j > B.j; //j从大到小排序
    15 }
    16 
    17 int main()
    18 {
    19     int n, sum, kase = 1;
    20     while(~scanf("%d", &n) && n)
    21     {
    22         sum = 0;
    23         for(int i = 0; i < n; i++)
    24         {
    25             scanf("%d %d", &p[i].b, &p[i].j);
    26             sum += p[i].b; //累加所有交代任务所需要的时间
    27         }
    28         sort(p, p+n, cmp); //结构体排序
    29         int max1 = -inf;
    30         //求出最后一次任务交代完了之后,还需要执行多长的时间。
    31         for(int i = 0; i < n; i ++) max1 = max(p[i].j, max1-p[i].b);
    32         sum += max1; //加上最后一次任务交代完了之后还需要执行的时间就是总时间
    33         printf("Case %d: %d
    ", kase++, sum); //输出格式注意一下就可以了。
    34     }
    35 }
    View Code
  • 相关阅读:
    sublime3使用
    内存缓存 ehcache
    一些服务端写代码的规范,很重要
    对于算法的一点思考
    使用单元测试引发的一些思考
    在多线程中使用spring的bean
    一个线上缓存异常
    java 中的同步机制
    微服务中的集成测试
    服务升级中的zookeeper
  • 原文地址:https://www.cnblogs.com/loveprincess/p/4820578.html
Copyright © 2020-2023  润新知