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\n", ans1, ans2);
55     }
56
57     return 0;
58 }

HDU 4864

转载于:https://www.cnblogs.com/Silence-AC/p/3863944.html

HDU 4864 Task(2014多校--贪心)相关推荐

  1. hdu 4864 Task(贪婪啊)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 Task Time Limit: 4000/2000 MS (Java/Others)    M ...

  2. HDU 4864 Task(贪心或高斯消元)

    题意:n台机器工作时间为ai,等级bi,m个任务需要时间ai,等级bi,一台机器只能完成一个任务,完成一个任务收益为500*ai+2*bi,求最大收益:(n,m>100000) 思路:先从大到小 ...

  3. 2014多校联合四(HDU 4901 HDU 4902 HDU 4905)

    HDU 4901 The Romantic Hero 题意: 一串数字a  找一个位置分开  前面为S'后面为T'  从这两个集合中分别选出子集S和T  使得S中元素的"异或"值等 ...

  4. 2019 杭电多校 HDU - 6625 three arrays 字典树+贪心

    题目链接:https://cn.vjudge.net/problem/HDU-6625 题意:a和b两个数组n个数,数字任意组合异或,求得到c数组的字典序最小 题解:对于两个数组从高位到低位建立两个字 ...

  5. 2014多校第四场1006 || HDU 4902 Nice boat (线段树 区间更新)

    题目链接 题意 : 给你n个初值,然后进行两种操作,第一种操作是将(L,R)这一区间上所有的数变成x,第二种操作是将(L,R)这一区间上所有大于x的数a[i]变成gcd(x,a[i]).输出最后n个数 ...

  6. hdu 4937 Lucky Number(数学题 进制转换)2014多校训练第7场

    Lucky Number                                                                          Time Limit: 20 ...

  7. 2014多校第一场A题 || HDU 4861 Couple doubi

    题目链接 题意 : 有K个球,给你一个数P,可以求出K个值,(i=1,2,...,k) : 1^i+2^i+...+(p-1)^i (mod p).然后女朋友先取,再xp取,都希望赢,如果女朋友能赢输 ...

  8. HDU 4868 Information Extraction(2014 多校联合第一场 H)

    看到这道题时我的内心是奔溃的,没有了解过HTML,只能靠窝的渣渣英语一点一点翻译啊TT. Information Extraction 题意:(纯手工翻译,有些用词可能在html中不是一样的,还多包涵 ...

  9. HDU 5037 Frog(2014年北京网络赛 F 贪心)

    开始就觉得有思路,结果越敲越麻烦...  题意很简单,就是说一个青蛙从0点跳到m点,最多可以跳l的长度,原有石头n个(都仅表示一个点).但是可能跳不过去,所以你是上帝,可以随便在哪儿添加石头,你的策略 ...

最新文章

  1. Ecsotre 参考
  2. linux文件怎么操作,linux文件操作学习1
  3. Tensorflow加载模型(进阶版):如何利用预训练模型进行微调(fintuning)
  4. Java通过Netty,实现Websocket消息推送简单几步搞定
  5. javascript判断图片是否加载完成方法整理
  6. pb blob存储到image_【Filecoin相关】速懂 Filecoin 自认证存储设计
  7. springmvc接收参数
  8. 七:Java之封装、抽象、多态和继承
  9. android 实现类似微信缓存和即时更新好友头像
  10. 管理感悟:深入理解软件
  11. trunc函数_这几个舍入函数你都会用吗?
  12. java面试官如何面试别人
  13. 2021-05-30
  14. Excel技巧[EXCEL 下拉填充公式,保持公式部分内容不变,使用绝对引用]
  15. Java实现简易版金山打字
  16. TPAMI2021语义分割/领域自适应-Domain Adaptation Network with Image Alignment for Unsupervised Semantic Segment
  17. 如何用公式编辑器打半中括号?
  18. OSChina 周一乱弹 —— 今天下班带你去放松咧
  19. onenote 思维导图_印象笔记、OneNote、熊掌记 哪个笔记App更适合文字工作者?
  20. Lammps安装教程 windows版

热门文章

  1. 虚拟机及VmBasic编译引擎实现
  2. 软件架构设计之常用架构模式
  3. golang中的panic和recover
  4. muduo之TimerQueue
  5. mysql服务启动出错:mysql: unrecognized service
  6. 口语学习Day6:今天聊聊国内安全还是国外安全?
  7. mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数
  8. 设计模式:模板方法(Template Method Pattern)
  9. 前端一HTML:六:标签的关系,分类
  10. python五十二:__setattr__,__delattr__,__getattr__方法