题目大意

  有一些奶牛,它们能挤出不同数量的奶,要想挤它要在其所对应的最后期限前完成。一个时间点只能挤完一个奶牛。问最多能挤出多少奶?

题解

  如果我们要挤一个奶牛,我们要让他越晚被挤越好,这样构成最优解的奶牛被选中的可能性最大。因此我们把所有奶牛按照最后期限从高到低一个个遍历(1)。当同一个时间点有多个奶牛时,我们挤那个奶数最多的牛(2)。注意:同一时间点其它的奶牛怎么办?我们不能把这些奶牛放弃不管了。我们应当把它的最后期限-1继续操作(操作*)。

  奶数最多的牛需要用优先队列来维护。注意:不用一下子就把所有牛都推进去同时实现(1)(2),这样我们实现操作*的方法就是把牛的最后期限-1再推入队列。此方法不开O2过不了,因为队列内数据量太大,push,pop操作又太多。因此我们只需要让当最后期限相等的情况下,只让队列实现(2)即可。也就是说对于一个最后期限,我们只取堆顶的奶牛,剩余的奶牛仍然保留在堆中,直接进行最后期限小1的操作,相当于没被挤到的奶牛的最后期限。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cassert>
using namespace std;const int MAX_COW = 100010, INF = 0x3f3f3f3f;struct Cow
{int Deadline, W;bool operator < (const Cow& b) const{return W < b.W;}
}_cows[MAX_COW];bool cmp(Cow a, Cow b)
{return a.Deadline < b.Deadline;
}int main()
{int totCow, maxt = 0;scanf("%d", &totCow);for (int i = 1; i <= totCow; i++){scanf("%d%d", &_cows[i].W, &_cows[i].Deadline);maxt = max(maxt, _cows[i].Deadline);}sort(_cows + 1, _cows + totCow + 1, cmp);static priority_queue<Cow> q;int curCow = totCow;int prevDeadline = INF, ans = 0;for (int i = maxt; i >= 1; i--){while (_cows[curCow].Deadline == i)q.push(_cows[curCow--]);if (!q.empty()){ans += q.top().W;q.pop();}}printf("%d\n", ans);return 0;
}

  

转载于:https://www.cnblogs.com/headboy2002/p/9184696.html

luogu3093 牛奶调度相关推荐

  1. [USACO13DEC]牛奶调度Milk Scheduling

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=4096 容易想到的一个测略就是,优先考虑结束时间小的牛.所以我们对所有牛按照结束时间排序.然 ...

  2. 2022/1/23(每周总结)

    刚开始放假有点懈怠了,爱睡懒觉,下周要尽量早起了 p1182 luogu 二分的一道题,可以说是个模板了,但我不会...这是做的第二道这样的题,l就是数组中的最大值,r就是数组的和,然后二分枚举每组的 ...

  3. NOIP知识汇总及模板整理

    排序 求逆序对 NOIP2013火柴排队 洛谷 P2309 loidc 卖卖萌 二分 牢记二分姿势 前缀和及差分优化 NOIP2012借教室差分优化 贪心 洛谷 P3093 牛奶调度 HDU 5500 ...

  4. 了解模型预测控制4--自适应,增益调度和非线性MPC

    如果您想使用MPC控制器控制您的系统,但不确定哪些方法可用? 那么,请继续阅读本文章,因为我会给您提供一些方法. 我首先要从煎饼配方开始,如果您耐心等待一会儿,您会看到它与MPC的联系.如果您有面粉. ...

  5. 蒙牛智慧牧场:最新鲜的牛奶来源于“数字牛”

    大多数做消费者业务的企业,其数字化变革往往发轫于营销端,因为营销端的变化对业务的影响最为直接.蒙牛的数字化转型则较为全面,不仅在消费者端.渠道端发力,也影响了企业的组织管理,甚至改造了供应链.其对牧场 ...

  6. 线程的状态、调度、同步

    线程的状态 java中的线程共五个状态:新建.就绪.运行.阻塞.死亡: 新建状态(New):处于系统创建线程,但未启动此线程,系统未为其分配资源. 就绪状态(Runnable):线程调用start( ...

  7. 操作系统学习笔记 第三章:处理机调度与死锁(王道考研)

    本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...

  8. CPU,GPU,Memory调度

    CPU,GPU,Memory调度 HDD&Memory&CPU调度机制(I/O硬件性能瓶颈) 图1. HDD&Memory&CPU调度图 CPU主要就是三部分:计算单元 ...

  9. GPU自动调度卷积层

    GPU自动调度卷积层 本文对GPU使用自动调度程序. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,无需任何调度命令或模板.自动调度程序 ...

最新文章

  1. Android--加载大分辨率图片到内存
  2. 刘歧:让人生不留遗憾
  3. 硬件知识:电脑硬盘的数据保护与恢复,新手必备的知识!
  4. portlet java_Java Portlet 规范概述
  5. 服务器安装三节点RabbitMQ集群(3)
  6. PAT1011. A+B和C
  7. go兼容java_兼容dubbo的微服务框架dubbogo;dubbo的完整go语言实现
  8. Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  9. 一文带你了解SQL的执行计划(explain)
  10. iOS 蓝牙开发之NFC读写
  11. windows下git ssh密钥生成
  12. 读书笔记之《梁宁增长思维30讲》
  13. 网络技术与技术革命周末随想
  14. 关于Negative values in data passed to MultinomialNB (input X)报错问题
  15. Linux 文件夹右下角有锁,解锁
  16. 多元线性回归公式推导及R语言实现
  17. 【EmailCamel外贸邮件群发】邮件到达收件箱系列文章05:免费公共邮箱作为发件人的限制
  18. c语言绝对值——abs和fabs
  19. illustrator字体设计教程 刘兵克Illustratorai字体设计日记
  20. CVPR:将X光图片用于垃圾分割,探索大规模智能垃圾分类

热门文章

  1. java 文件删除异常 ut_【JAVA-UT】12、抛出了指定的异常吗?
  2. pipe 半双工_pipe 半双工_Linux管道PIPE的原理和应用
  3. Maven 打包时不执行测试用例
  4. 公务员考试中的计算机知识点,2021年度公务员考试计算机基础知识试题.doc
  5. spring cloud Alibaba Sentinel中文文档
  6. 解决eclipse 中文乱码问题
  7. oracle服务未启动失败,windows服务未启动导致 ORA-12560和RMAN-00554错误 | 信春哥,系统稳,闭眼上线不回滚!...
  8. css margin和border,Margin、Border、Padding属性的区别和联系
  9. java 代码通用结构_java spring代码通用结构-java
  10. 加工中心局部坐标系g52设定_CNC加工中心程序代码大全,数控加工必备!