题目大意:现在有一圈灯泡,给定这些灯泡的周期 t i t_i ti和 x i x_i xi。其中第 i i i个灯泡会在 ( 2 k t i + 1 ) s (2kt_i + 1)s (2kti+1)s时刻亮起,并保持亮起直至 ( 2 k t i + t i ) s (2kt_i + t_i)s (2kti+ti)s后熄灭,即:在 ( 2 k t i + t i + 1 ) (2kt_i +t_i + 1) (2kti+ti+1)时刻开始保持熄灭,如此往复循环。
现在要求对于给定的灯泡序列,求出 [ 1 , m ] [1,m] [1,m]时间段内每个时间点最亮的灯泡的亮度。
思路分析:首先对于某一时间点,需要维护静态区间最大值,因此考虑线段树维护区间最大值。
首先我们所有的灯泡按照时间开始的顺序进行排序,对于相同周期的灯泡,我们按照亮度从大到小的顺序进行排序。然后模拟灯亮起的过程,不断地向线段树上插入当前时间区间的信息即可。值得注意的是,由于是取最大值,我们又按照相同时间从大到小进行了排序,因此对于相同周期的只需要遍历第一个即可。
Accepted Code#include
using namespace std;
const int N = 1e5 + 10;
int n, q, tree[N 1], tree[rt]); }
inline void push_down(int rt){
if(lazy[rt]){
lazy[rt
关注
打赏
- 回坑记之或许是退役赛季?
- [LCT刷题] P1501 [国家集训队]Tree II
- [LCT刷题] P2147 洞穴勘测
- 2022-2023 ICPC Brazil Subregional Programming Contest VP记录
- [线段树套单调栈] 2019-2020 ICPC Asia Hong Kong Regional Contest H.[Hold the Line]
- The 2021 ICPC Asia Nanjing Regional Contest E.Paimon Segment Tree 区间合并线段树/维护矩阵乘法
- CF580E - Kefa and Watch 线段树维护哈希
- HDU5869 Different GCD Subarray Query 离线查询/区间贡献
- 27.CF1004F Sonya and Bitwise OR 区间合并线段树
- 26.CF1000F One Occurrence