题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1572

题意:

约翰接到了N份工作,每份工作恰好占用一天的时间。约翰从第一天开始工作,他可以任意安排这些工作的顺序,第i份工作有Pi的报酬,但必须在第Di天结束之前完成。问最多能赚多少钱。n<=10^5,di,pi<=10^9

题解:

贪心。按di排序,如果天数不够就把pi最小的放弃。具体来说就是di从小到大扫一遍,如果pi>0就把它放进优先队列(按pi排序)里,如果q.size()>di也就是天数不够做完这些工作,就把队头也就是最小的pi pop出来。

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4. #include<iostream>
  5. #include<algorithm>
  6. #include<queue>
  7. #include<cmath>
  8. #include<set>
  9. using namespace std;
  10.  
  11. typedef long long LL;
  12. const int N=;
  13. int n;
  14. struct node{
  15. int d;LL p;
  16. }a[N];
  17. struct cmp{
  18. bool operator() (int &x,int &y)
  19. {
  20. return a[x].p>a[y].p;
  21. }
  22. };
  23. priority_queue<int,vector<int>,cmp> q;
  24.  
  25. bool cmp(node x,node y){return x.d<y.d;}
  26.  
  27. int main()
  28. {
  29. // freopen("a.in","r",stdin);
  30. freopen("job.in","r",stdin);
  31. freopen("job.out","w",stdout);
  32. scanf("%d",&n);
  33. for(int i=;i<=n;i++)
  34. {
  35. scanf("%d%d",&a[i].d,&a[i].p);
  36. }
  37. sort(a+,a++n,cmp);
  38. while(!q.empty()) q.pop();
  39. int x;
  40. LL ans=;
  41. for(int i=;i<=n;i++)
  42. {
  43. if(a[i].p>)
  44. {
  45. q.push(i);
  46. ans+=a[i].p;
  47. }
  48. while(q.size()>a[i].d)
  49. {
  50. x=q.top();
  51. ans-=a[x].p;
  52. q.pop();
  53. }
  54. }
  55. printf("%lld\n",ans);
  56. return ;
  57. }

【bzoj1572-工作安排】贪心的更多相关文章

  1. JZYZOJ1622 [usaco2009]工作安排 贪心

    和p1123智力大冲浪一样,可以用优先队列写...   每一秒可以做一个工作....因为n个任务只要在限制之前完成就行,所以时间不冲突的话肯定越早做完越好..所以最多的时间是n,当然限定的完成时间中最 ...

  2. BZOJ1572 工作安排 USACO2009

    描述 Description     Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间.他的工作日从0时刻开始,有100000 ...

  3. [bzoj1572]工作安排

    按照Di排序,从小到大枚举物品,考虑如果直接能选就选上,不能选就考虑替换之前价值最小的来选(显然一定是可行的,只需要在原来选价值最小的时候选这个就行了),这个东西用堆来维护即可 1 #include& ...

  4. [bzoj1572][Usaco2009 Open]工作安排Job_贪心_堆

    工作安排 Job bzoj-1572 Usaco-2009 Open 题目大意:题目链接. 注释:略. 想法: 我们将任务按照截止时间排序,枚举任务的同时顺便记录出已经做了多少任务(当前时间). 对于 ...

  5. BZOJ 1572: [Usaco2009 Open]工作安排Job( 贪心 )

    贪心... 按截止时间排序 , 然后从小到大考虑 . 假设当前考虑第 i 个任务 , 若目前已选工作数 < D_i , 那就选 i ; 否则 若已选工作中利润最小的比 P_i 小 , 那就去除它 ...

  6. 【BZOJ 1572】 1572: [Usaco2009 Open]工作安排Job(贪心+优先队列)

    1572: [Usaco2009 Open]工作安排Job Description Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单 ...

  7. BZOJ1572: [Usaco2009 Open]工作安排Job

    1572: [Usaco2009 Open]工作安排Job Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 775  Solved: 337[Submit ...

  8. 【BZOJ】【2245】【SDOI2011】工作安排

    网络流/费用流 裸题吧……直接建模就好了……所谓的“分段函数”就是吓唬你的,其实就是对于每个人分开建几条流量不同.费用不同的弧而已. 对每种产品,连S->i ,(c[i],0):对每个工作人员 ...

  9. lemon OA 下阶段工作安排

    lemon OA 下阶段工作安排 经验总结 lemon OA系统作为一个中型的java web系统,在架构上还是有着很好地可学习的地方.但是由于经验不足,过程比较迂回.如果真的有经验的话,应该可以做到 ...

  10. bzoj 2245 [SDOI2011]工作安排(最小费用最大流)

    2245: [SDOI2011]工作安排 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1197  Solved: 580[Submit][Statu ...

随机推荐

  1. 【week6】psp

    本周psp

  2. 求csdn博客优良编辑方法

    看见很多大牛的csdn博客编写的非常好,阅读体验也非常强.我就纳闷了,为啥我插公式也不行,插图片也不行呢... 插图片问题:图片不能复制招贴,否则在编辑的时候可以显示但是在发表之后就无法显示了.想要显 ...

  3. Swift & Unicode

    Swift & Unicode emoji let == const https://www.runoob.com/swift/swift-basic-syntax.html

  4. IE8 兼容CSS3 使用 PIE.htc

    在需要的标签中 div { border:; border-bottom: 10px solid transparent; border-image: url(../images/border-img ...

  5. 能选择日期范围js控件

    html页面中使用日期控件是常有的事,好控件能使用开发变的快捷,下面是在开发过程中发现的几款日期控件,比较不错,收藏 1.基于bootstrap的jQuery日期范围选择插件 2.jQuery多功能日 ...

  6. UIKit中的几个核心对象的介绍:UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

    UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...

  7. BZOJ4850/BZOJ2216 JSOI2016灯塔/Poi2011Lightning Conductor(决策单调性)

    即对每个i最大化hj-hi+sqrt(|i-j|).先把绝对值去掉,正反各做一次即可.注意到当x>y时,sqrt(x+1)-sqrt(x)<sqrt(y+1)-sqrt(y),所以若对于i ...

  8. 51nod 1304 字符串的相似度(exkmp)

    拓展kmp裸题 自己跟自己匹配即可 模板测试=v= #include <iostream> #include <cstring> using namespace std; ; ...

  9. [BZOJ2821]作诗

    description 在线询问区间内出现次数为正偶数的数的种数. data range \[n,m\le 10^5\] solution 分块大法好 首先离散化权值 这种对于权值做询问并且询问放在一 ...

  10. [NOIP2010] 引水入城 贪心 + 记忆化搜索

    ---题面--- 题解: 本蒟蒻并没有想到bfs的做法,,,, 只会dfs了 首先我们需要知道一个性质. 我们设k[i].l 为在i点建立水库可以支援到的最左边的城市,k[i].r为最右边的. 那么点 ...