zoukankan      html  css  js  c++  java
  • HDU 4864 Task(2014多校--贪心)

    Task

    比赛当时思路想的差不多,感觉能过的,该处理的也都处理到了,最后还是没过,可能是二分写错了吧-。-

    大意:给你n个机器,m个要完成的任务,每个机器跟任务都有两个属性,机器是最大工作时间跟等级,任务是需要工作的时间跟等级。完成一个任务可以得到500*(工作时间)+2*(等级)的报酬。完成任务的条件是机器的工作时间满足任务的需要,等级要大于等于任务的等级,一个机器只能用一次,一个任务也只能用一个机器去完成。需要进行策略选择,使得完成更多的任务。

    思路:开始想的就是贪心,也想到了贪心的时候时间是主导因素,要优先考虑,赛后写的时候是看的标程用的map来实现的。

     1 struct node
     2 {
     3     int time, lev;
     4 } a[100010], b[100010];
     5 
     6 int cmp(node a, node b)
     7 {
     8     if(a.time == b.time)
     9         return a.lev > b.lev;
    10     return a.time > b.time;
    11 }
    12 
    13 map<int, int> M;
    14 int n, m;
    15 
    16 int main()
    17 {
    18     while(~scanf("%d%d", &n, &m))
    19     {
    20         for(int i = 0; i < n; ++i)
    21         {
    22             scanf("%d%d", &a[i].time, &a[i].lev);
    23         }
    24         for(int i = 0; i < m; ++i)
    25         {
    26             scanf("%d%d", &b[i].time, &b[i].lev);
    27         }
    28         sort(a, a+n, cmp);
    29         sort(b, b+m, cmp);
    30         M.clear();
    31         int j = 0;
    32         int ans1 = 0;
    33         long long ans2 = 0;
    34         for(int i = 0; i < m; ++i)
    35         {
    36             while(j < n && a[j].time >= b[i].time)
    37             {
    38                 M[a[j].lev]++;
    39                 ++j;
    40             }
    41             map<int, int>::iterator it = M.lower_bound(b[i].lev);
    42             if(it != M.end())
    43             {
    44                ans1++;
    45                ans2 += 500*b[i].time+2*b[i].lev;
    46                int t = it->first;
    47                M[t]--;
    48                if(M[t] == 0)
    49                {
    50                    M.erase(t);
    51                }
    52             }
    53         }
    54         printf("%d %I64d
    ", ans1, ans2);
    55     }
    56 
    57     return 0;
    58 }
    HDU 4864
  • 相关阅读:
    洛谷P5661 公交换乘(二分)
    洛谷P4047 [JSOI2010]部落划分(最小生成树)
    洛谷P2872 [USACO07DEC]Building Roads S(最小生成树)
    卸载重装VirtualBox回滚报错
    POJ1151 Atlantis(扫描线+线段树+离散化)
    QT入门-信号槽拓展
    Vue模板语法与常用指令总结
    Vue 生命周期
    querySelector和getElementById方法的区别
    ES6 Class(类)的继承与常用方法
  • 原文地址:https://www.cnblogs.com/Silence-AC/p/3863944.html
Copyright © 2011-2022 走看看