[luogu7476]苦涩
维护线段树,在其每一个节点上维护一个set(可重),以及子树内所有set的最大值
考虑下传标记,如果将所有元素全部下传复杂度显然不正确,但注意到我们仅关心于其中的最大值,即仅需要将最大值下传即可
其有可能需要在已经被完全覆盖的区间内继续递归,以找到”子树内所有set的最大值“的位置
关于这一做法的复杂度,可以均摊为总标记数,注意到前者下传标记至多增加$o(\log n)$个,即可得总复杂度为$o(n\log^{2}n)$(每一次操作还有set的$o(\log n)$)

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 #define L (k<<1)
5 #define R (L+1)
6 #define mid (l+r>>1)
7 priority_queue<int>S[N<<3];
8 int n,m,p,x,y,z,f[N<<3];
9 void up(int k){
10 if (S[k].empty())f[k]=max(f[L],f[R]);
11 else f[k]=max(max(f[L],f[R]),S[k].top());
12 }
13 void add(int k,int x){
14 S[k].push(x);
15 f[k]=max(f[k],x);
16 }
17 void del(int k){
18 S[k].pop();
19 up(k);
20 }
21 void down(int k){
22 if (!S[k].empty()){
23 add(L,S[k].top());
24 add(R,S[k].top());
25 S[k].pop();
26 }
27 }
28 void add(int k,int l,int r,int x,int y,int z){
29 if ((l>y)||(x>r))return;
30 if ((x<=l)&&(r<=y)){
31 add(k,z);
32 return;
33 }
34 add(L,l,mid,x,y,z);
35 add(R,mid+1,r,x,y,z);
36 up(k);
37 }
38 void del(int k,int l,int r,int x,int y,int z){
39 if ((l>y)||(x>r))return;
40 if ((x<=l)&&(r<=y)){
41 if (f[k]<z)return;
42 if ((!S[k].empty())&&(S[k].top()==z)){
43 del(k);
44 return;
45 }
46 }
47 del(L,l,mid,x,y,z);
48 del(R,mid+1,r,x,y,z);
49 up(k);
50 }
51 int query(int k,int l,int r,int x,int y){
52 if ((l>y)||(x>r))return -1;
53 if ((x<=l)&&(r<=y))return f[k];
54 down(k);
55 return max(query(L,l,mid,x,y),query(R,mid+1,r,x,y));
56 }
57 int main(){
58 scanf("%d%d",&n,&m);
59 memset(f,-1,sizeof(f));
60 for(int i=1;i<=m;i++){
61 scanf("%d%d%d",&p,&x,&y);
62 if (p==1){
63 scanf("%d",&z);
64 add(1,1,n,x,y,z);
65 }
66 if (p==2){
67 z=query(1,1,n,x,y);
68 if (z>=0)del(1,1,n,x,y,z);
69 }
70 if (p==3)printf("%d\n",query(1,1,n,x,y));
71 }
72 }
[luogu7476]苦涩的更多相关文章
- 苦涩的技术我该怎么学?Akka 实战
上次我们在“懵 B”的状态下,聊了聊 Actor 模型的理论知识.稍微再补充两句,如上图所示在 Actor 模型系统中,主要有互不依赖的 Actor 组成(图中圆圈),Actor 之间的通信是通过消息 ...
- P7476 苦涩 题解
Link 一道很好的复杂度均摊题目. 只需要考虑删除操作时的时间复杂度.保证复杂度的重点之一是精确定位到所有包含最大值的区间,即不去碰多余的区间.每次删除操作会删除若干个整个区间,以及至多两个区间被删 ...
- Flexbox 自由的布局
css3提出了一种新的布局方式.她并没有以摧枯拉朽之势博得我的喜爱.我和她的故事总是伴随着苦涩的味道.世道变了,总要做出些选择才能跟紧步伐.她很强大,能满足你天马行空的需求而不必抓掉一大把头发.她却很 ...
- This is US 我们的生活
温情暖心剧 看点在于真实,能让人找到不少共鸣像极了平淡而操蛋的生活,不断交织着苦涩和甘甜,柴米油盐.酸甜苦辣.嬉笑打闹.悲欢离合.温情又不尽如人意 this is us,our life 生活有如柠檬 ...
- 一篇通俗易懂的CSS层叠顺序与层叠上下文研究
网上有很多这方面的教程,但不是苦涩难懂就是从哪copy过来的,反正很长一段时间我是没看懂,时间长了也没打算去研究了,主要原因是,基本上很少会遇到那些问题(所以说啊,要是没有研究精神的才懒得管它).但自 ...
- Dog_Hybird的诞生
起因 开玩笑说“iOS搞不动了”,另外一方面iOS组的哥哥们给力,少一个我也妥妥的.又听闻web前端组来了一个不得了的人物,“老司机,带带我”这种机会不能错过,1个多月前就申请转web前端了.开始是苦 ...
- python基础-文件操作
一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ,只读模式[默认模式,文件必须存在,不存在则抛出异 ...
- Python之路,Day3 - Python基础3
一.文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- Python之路第一课Day3--随堂笔记(文件操作)
一.集合的介绍 1.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = se ...
随机推荐
- Codeforces Round #747 (Div. 2)
比赛地址 A(水题) 题目链接 题目: 给出指定\(n\),求解出一段区间\([l,r]\)使得\(\sum\limits_{i=l}^ri=n\) 解析: 从点0,1两点作为起点分别向左右延伸长度, ...
- 升级了 Windows 11 正式版,有坑吗?
今天磊哥去公司上班,惊喜的发现 Windows 提示更新了,并且是 Windows 11 正式版,这太让人开心了,二话不说"先升为敬". 下载更新 下载完咱就重启更新呗. Wi ...
- 电脑(windows)端口被占用如何解决
问题: 今天在启动项目的时候,控制台提示"8080端口被占用",此时我并没有启动其他项目.那么8080端口被占用解决方法如下: 1.点击左下角"开始",在搜索框 ...
- python OptionParser的用法
from optparse import OptionParser parser = OptionParser(usage = "usage: %prog [options] arg&quo ...
- 个人记录:对于python学习的反思和总结(一)
在写代码时,总是遇到写着写着不知道怎么写了的情况,或者无法把自己的想法用程序表达出来,所以有时候我们需要建立一个自己的编程思路,对一个具体程序的编程有一个比较清晰的想法:因此我把自己的思路总结了一下, ...
- [源码解析] PyTorch如何实现前向传播(3) --- 具体实现
[源码解析] PyTorch如何实现前向传播(3) --- 具体实现 目录 [源码解析] PyTorch如何实现前向传播(3) --- 具体实现 0x00 摘要 0x01 计算图 1.1 图的相关类 ...
- 如何将jdk12的源码导入idea
如何将jdk12的源码导入idea中 一 首先,在idea中新建一个java工程 接着,在本地找到jdk所在的文件目录,进入jdk目录,找到javasrc目录或者一个src.zip的压缩包, 在向下或 ...
- BUAA SE 软件案例分析-CSDN
Q A 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 系统地学习软件工程开发知识,掌握相关流程和技术,提升 ...
- BUAA 软工 个人博客作业(一)
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 通过阅读<构建之法>大致了解软件工程 这个作业在哪 ...
- IE浏览器——网络集合代理无法启动
用管理员身份运行cmd然后输入 sc config diagnosticshub.standardcollector.service start=demand