关于这个题想强调一下这个时间点i的意义.

在二分中有这句话

while(cnt <= N && E[cnt].s < i) q.push(E[cnt++]);

我一开始不理解为什么起始时间严格小于 i 才能push进去, 网上好像也没有讲的.

自己手玩了一下, 才明白实际上 i 可以理解成第 i 天的末尾.

那么, 如果起始时间等于 i 的话相当于是在这一天的开头, 当然不能扔进去.

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <queue>
 6 using namespace std;
 7 const int MAXN = 1e5 + 20;
 8
 9 int N;
10 struct event
11 {
12     int s, t, w;
13     bool operator <(const event &rhs) const{
14         return t > rhs.t;
15     }
16 }E[MAXN];
17
18 bool cmp1(const event &lhs, const event &rhs){
19     return lhs.s < rhs.s;
20 }
21 int last = 0;
22
23 inline bool check(int x)
24 {
25     priority_queue<event> q;
26     int cnt = 1;
27     for(int i = 1; i <= last; i++)
28     {
29         while(cnt <= N && E[cnt].s < i) q.push(E[cnt++]);
30
31         int v = x;
32         while(!q.empty() && v > 0)
33         {
34             event u = q.top(); q.pop();
35             if(u.t < i) return false;
36             if(u.w > v){
37                 u.w -= v;
38                 q.push(u);
39                 break;
40             }
41             else v -= u.w;
42         }
43         if(cnt == N + 1 && q.empty()) return true;
44     }
45     return false;
46 }
47
48 int main()
49 {
50     int T;
51     cin>>T;
52     while(T--)
53     {
54         last = 0;
55         cin>>N;
56         int l = 0, r = 0;
57         for(int i = 1; i <= N; i++)
58             scanf("%d%d%d", &E[i].s, &E[i].t, &E[i].w),
59             r += E[i].w, last = max(last, E[i].t);
60
61         sort(E + 1, E + N + 1, cmp1);
62
63         #define mid (((l) + (r)) >> 1)
64         while(l < r)
65         {
66             if(check(mid)) r = mid;
67             else l = mid + 1;
68         }
69         printf("%d\n", l);
70     }
71     return 0;
72 }

转载于:https://www.cnblogs.com/wsmrxc/p/9228194.html

UVa1422 Processor相关推荐

  1. UVa1422 - Processor(二分法)

    问题:给出n个任务,已知每个任务的起始时间.结束时间及工作量.n个任务串行执行,问处理器可以完成这些任务时,处理器速度的最小值. 思路:因为起始时间.结束时间.工作量及处理器速度为整数.先将任务按照起 ...

  2. Pliops XDP(Extreme Data Processor)数据库存储设计的新型加速硬件

    文章目录 0 前言 1 核心问题 1.1 引擎的各方面性能受限于数据结构的选择 1.2 压缩功能 导致的CPU瓶颈 1.3 Crash-safe 崩溃异常的无奈选择 1.4 当前主流 加速硬件 较难满 ...

  3. 【Cmake】执行cmake命令时报错:No XSLT processor found

    一.问题描述 在ubuntu中,在生成Doc(文档)中,执行cmake命令时报错:No XSLT processor found 二.原因查找 google该错误信息,原因是确实ubuntu中没有安装 ...

  4. html5 audio标志改变音量,HTML5之Audio(二)—— processor调节音量

    Audio var AudioContext = AudioContext || webkitAudioContext || mozAudioContext || msAudioContext, // ...

  5. PXA270-基于ARM9内核Processor外部NAND FLASH的控制实现

    于ARM9内核Processor外部NAND FLASH的控制实现 夏 涛 (上海交通大学微电子学院 上海 200030) 1 NAND FLASH NAND写回速度快.芯片面积小,特别是大容量使其优 ...

  6. Codeforces Round #355 (Div. 2) B. Vanya and Food Processor 水题

    B. Vanya and Food Processor 题目连接: http://www.codeforces.com/contest/677/problem/B Description Vanya ...

  7. Elasticsearch 摄取节点(Ingest Node)常用的数据处理器(Processor)

    文章目录 Set Processor Append Processor Remove Processor Rename Processor Convert Processor Grok Process ...

  8. springbatch的writer、processor、reader复杂太难用?使用tasklet更方便!

    writer.processor.reader复杂太难用,使用mybatis太复杂,操作数据库太复杂,一不小心还会配置出错. 使用tasklet更加方便! @Component public clas ...

  9. Xilinx IP解析之Processor System Reset v5.0

    一. IP概述 可参考Xilinx官网Processor System Reset Module概述, 以下翻译自官网此IP的概述. 产品描述: Xilinx处理器系统复位模块允许客户通过设置某些参数 ...

最新文章

  1. 箱线图怎么判断异常值_箱形图(Box-plot)识别异常值,是否有数据依据?还是经验法则?...
  2. 浏览器常见bug及解决办法
  3. 修改表字段类型长度_PG修改字段
  4. 【算法竞赛学习】二手车交易价格预测-Task4建模调参
  5. JDK官网下载速度缓慢解决方法
  6. 机器人方队解说词_创想机器人博物馆配音解说词
  7. 【超级鼠标键盘锁】之HOOK钩子屏蔽鼠标和Ctrl+Alt+Del、Win+L之外的按键
  8. CAD格式刷怎么用?CAD格式刷使用技巧
  9. 【读书笔记】《Web全栈工程师的自我修养》
  10. python语音库_python音频库dejavu原理浅析
  11. 年度回顾篇:2018年的亚马逊,众生虽苦,诸恶莫作
  12. android朋友圈动态视频,Android实现微信朋友圈图片和视频播放
  13. 深入理解Spring IoC的原理(转发)
  14. 机器人鸣人是哪一集_火影忍者596集剧情介绍番外篇九尾抢夺指令_鸣人VS机器人版鸣人...
  15. 要闻 | 人大金仓重磅亮相2022南京软博会
  16. ROS下同步通信topic和异步通信service的异同
  17. 企业微信对外收款使用指南
  18. SQL之cast()函数用法
  19. 接招吧,最强“高并发”系统设计 46 连问,分分钟秒杀一众面试者
  20. 《多核与GPU编程:工具、方法及实践》----1.3 现代计算机概览

热门文章

  1. wxpython 文本框TextCtrl
  2. VMWare虚拟机-锁定文件失败,打不开磁盘的解决办法
  3. 个人项目1:随机生成30道整数四则运算题
  4. 2018把坚韧坚持到底
  5. Reveal v4(8796) 使用
  6. centos安装python gcc sqlite
  7. How to install OpenERP 6 on Ubuntu 10.04 LTS Server--1
  8. [导入]C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式.zip(10.41 MB)...
  9. MySQL Statement Cancellation Timer] but has failed to stop it.
  10. java找不到符号IOException_java:7: 找不到符号