info: { blogIcon: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogUser: 'OIerBoy', blogAvatar: 'https://cdn.luogu.com.cn/upload/usericon/765493.png', blogStartDate: '2023-04-22', webpageTitleOnblur: '(o?v?)ノ Hi', webpageTitleOnblurTimeOut: 1000, webpageTitleFocus: '(*′?`*) 欢迎回来!', webpageTitleFocusTimeOut: 1000, webpageIcon: "https://cdn.jsdelivr.net/gh/BNDong/Cnblogs-Theme-SimpleMemory@master/img/webp/blog_logo.webp", { enable: true, // 是否开启日/夜间模式切换按钮 auto: { // 自动切换相关配置 enable: false, // 开启自动切换 dayHour: 5, // 日间模式开始时间,整数型,24小时制 nightHour: 19 // 夜间模式开始时间,整数型,24小时制 } } },

[ABC128E] Roadwork

2023-01-14

题目

题目传送门

翻译

翻译

难度&重要性(1~10):4

题目来源

AtCoder

题目算法

区间覆盖,线段树,双堆

解题思路

可以将问题转化为区间覆盖问题和单点查询问题。
一共会有 \(3\) 种操作:
\(1.\) 插入一个区间。
\(2.\) 删除一个区间。
\(3.\) 查询一个区间。
想到这我是想用双堆去做。
一个小根堆存已经插入的区间,一个小根堆存已经被删除的区间。
当两个堆的堆顶相同时,就代表这个区间已经删除了可以去掉了。
此时的开始时间就会转化为 \(s-x\)\(t-x\),那么从 \(s-x\)\(t-x\) 这段时间走到这的就必然停下。
建议将施工结束的时间从小到大排序,如果结束时间相同就比较施工开始时间。

完成状态

已完成

posted @ 2023-04-26 19:47  OIerBoy  阅读(48)  评论(0)    收藏  举报