[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 ...
随机推荐
- B - Ancient Cipher POJ - 2159 解题报告
内容: Ancient Roman empire had a strong government system with various departments, including a secret ...
- 新一代数据科学ide平台DataSpell提前发行版体验
1 简介 PyCharm开发公司jetbrains专门面向数据科学的ide项目DataSpell在前不久发布了其EAP版本(早期预览版本),为我们带来了诸多趋于成熟的功能特性,本文就将为大家介绍其使用 ...
- 手摸手教你用 yapi-to-typescript生成Yapi的TypeScript数据类型
一 背景 现代社会比较重视效率,本着这个思想宗旨,能用工具自动高效做的事情,就不要低质量的勤奋.yapi-to-typescript就是一款自动生成接口请求与响应的typescript数据类型定义的工 ...
- 跟着老猫一起来学GO,环境搭建
老猫的GO学习系列博客已经正式发车了,相信大家以前学习一门编程语言的时候也有经验,咱们一般都是从环境开始,在此呢,大家也跟着老猫从最开始的搭建环境开始. GO语言的安装 首先呢,我们开始需要下载GO语 ...
- AtCoder Beginner Contest 223
AtCoder Beginner Contest 223 A是纯纯的水题,就不说了 B - String Shifting 思路分析 我真的sb,一开始想了好久是不是和全排列有关,然后读了好几遍题目也 ...
- Coursera Deep Learning笔记 序列模型(三)Sequence models & Attention mechanism(序列模型和注意力机制)
参考 1. 基础模型(Basic Model) Sequence to sequence模型(Seq2Seq) 从机器翻译到语音识别方面都有着广泛的应用. 举例: 该机器翻译问题,可以使用" ...
- JVM:内存模型
JVM:内存模型 说明:这是看了 bilibili 上 黑马程序员 的课程 JVM完整教程 后做的笔记 1. java 内存模型 很多人将[java 内存结构]与[java 内存模型]傻傻分不清,[j ...
- 如何再一台电脑上配置多个tomcat同时运行
1.配置运行tomcat 首先要配置java的jdk环境,这个就不在谢了 不懂去网上查查,这里主要介绍再jdk环境没配置好的情况下 如何配置运行多个tomcat 2.第一个tomcat: 找到&qu ...
- JAVA的array中indexOf
记得龙哥有个重构的文章里说直接判断啥的. 今天看JDK ArrayList,看到了他的 indexOf,他先判断,后进入循环,看似写了两遍for 循环,但是简单明了暴力.i like it . pub ...
- [Beta]the Agiles Scrum Meeting 10
会议时间:2020.5.25 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 暂无 tq 暂无 wjx 实现创建.显示博客作业功能 增加博客作业功能 dzx 实 ...