维护线段树,在其每一个节点上维护一个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]苦涩的更多相关文章

  1. 苦涩的技术我该怎么学?Akka 实战

    上次我们在“懵 B”的状态下,聊了聊 Actor 模型的理论知识.稍微再补充两句,如上图所示在 Actor 模型系统中,主要有互不依赖的 Actor 组成(图中圆圈),Actor 之间的通信是通过消息 ...

  2. P7476 苦涩 题解

    Link 一道很好的复杂度均摊题目. 只需要考虑删除操作时的时间复杂度.保证复杂度的重点之一是精确定位到所有包含最大值的区间,即不去碰多余的区间.每次删除操作会删除若干个整个区间,以及至多两个区间被删 ...

  3. Flexbox 自由的布局

    css3提出了一种新的布局方式.她并没有以摧枯拉朽之势博得我的喜爱.我和她的故事总是伴随着苦涩的味道.世道变了,总要做出些选择才能跟紧步伐.她很强大,能满足你天马行空的需求而不必抓掉一大把头发.她却很 ...

  4. This is US 我们的生活

    温情暖心剧 看点在于真实,能让人找到不少共鸣像极了平淡而操蛋的生活,不断交织着苦涩和甘甜,柴米油盐.酸甜苦辣.嬉笑打闹.悲欢离合.温情又不尽如人意 this is us,our life 生活有如柠檬 ...

  5. 一篇通俗易懂的CSS层叠顺序与层叠上下文研究

    网上有很多这方面的教程,但不是苦涩难懂就是从哪copy过来的,反正很长一段时间我是没看懂,时间长了也没打算去研究了,主要原因是,基本上很少会遇到那些问题(所以说啊,要是没有研究精神的才懒得管它).但自 ...

  6. Dog_Hybird的诞生

    起因 开玩笑说“iOS搞不动了”,另外一方面iOS组的哥哥们给力,少一个我也妥妥的.又听闻web前端组来了一个不得了的人物,“老司机,带带我”这种机会不能错过,1个多月前就申请转web前端了.开始是苦 ...

  7. python基础-文件操作

    一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ,只读模式[默认模式,文件必须存在,不存在则抛出异 ...

  8. Python之路,Day3 - Python基础3

    一.文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  9. Python之路第一课Day3--随堂笔记(文件操作)

    一.集合的介绍 1.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = se ...

随机推荐

  1. Java(16)修饰符

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201619.html 博客主页:https://www.cnblogs.com/testero ...

  2. git 修改最后一次提交

    git 修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了. 此时,可以运行带有 --amend 选项的提交命令来重新提交:git commit --amend -m ...

  3. Pycharm无法打开,双击没反应

    以下方案皆为引用,仅供参考. 方案一: 1.先声明一下,这种解决方法适用于任何版本的永久破解启动不了的情况(包括:2019版本的)2.下面直接切入正题之所以我们破解之后,不能正常启动的原因有两种:① ...

  4. Android系统编程入门系列之应用权限的定义与申请

    在之前关于应用内数据本地保存为文件时,曾提到应用需要申请外部存储设备的读写权限才能访问外部存储中的文件.那么针对某一种权限,应用程序具体应该怎么申请使用呢?本文将详细介绍. 应用中的权限主要分为两类, ...

  5. 【UE4 C++】Input 输入事件绑定

    轴映射与动作映射 编辑器设置input+代码实现具体动作 void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInp ...

  6. 力扣 - 剑指 Offer 53 - II. 0~n-1中缺失的数字

    题目 剑指 Offer 53 - II. 0-n-1中缺失的数字 思路1 排序数组找数字使用二分法 通过题目,我们可以得到一个规律: 如果数组的索引值和该位置的值相等,说明还未缺失数字 一旦不相等了, ...

  7. UltraSoft - Alpha - Scrum Meeting 1

    Date: Apr 06th, 2020. 会议内容为讨论功能规格书和技术规格书的撰写. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM.后端 进行Djan ...

  8. 乘风破浪,遇见上一代操作系统Windows 10 - 抢鲜尝试安装新微软商店(Microsoft Store)

    背景 在微软官方文章的<十一项关于微软商店新知>中提到: 新的微软商店现在可在Windows 11上找到,我们很高兴地分享,它将在未来几个月内提供给Windows 10客户!我们将很快分享 ...

  9. Noip模拟31 2021.8.5

    T1 Game 当时先胡了一发$\textit{Next Permutation}$... 然后想正解,只想到贪心能求最大得分,然后就不会了.. 然后就甩个二十分的走了... 正解的最大得分(叫它$k ...

  10. 零基础入门C/C++实现你的浪漫表白:浪漫流星雨表白程序

    想要讨女朋友欢心也巩固自己所学的知识,各位小伙伴有自己的想法了吗?准备好想要怎样实施了吗?有什么美好的计划了吗?如果没有的话那么别慌,我知道,在座的各位肯定都是有自己的心仪的姑娘,那么今天就教大家一招 ...