BZOJ4864[BeiJing 2017 Wc]神秘物质——非旋转treap
题目描述
输入
输出
样例输入
5 8 10 2
max 1 3
min 1 3
max 2 4
样例输出
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#include<bitset>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pr pair<int,int>
#define ll long long
using namespace std;
int ls[200010];
int rs[200010];
int r[200010];
int v[200010];
int mn[200010];
int size[200010];
int mx[200010];
int s[200010];
int t[200010];
int n,m;
char ch[10];
int x,y;
int cnt;
int a,b,c,d;
int root;
int build(int val)
{int rt=++cnt;v[rt]=val;r[rt]=rand();size[rt]=1;mx[rt]=mn[rt]=val;ls[rt]=rs[rt]=0;t[rt]=s[rt]=1e9+7;return rt;
}
void pushup(int rt)
{size[rt]=size[ls[rt]]+size[rs[rt]]+1;mx[rt]=max(max(mx[ls[rt]],mx[rs[rt]]),v[rt]);mn[rt]=min(min(mn[ls[rt]],mn[rs[rt]]),v[rt]);t[rt]=min(min(t[ls[rt]],t[rs[rt]]),s[rt]);
}
int merge(int x,int y)
{if(!x||!y){return x+y;}if(r[x]<r[y]){rs[x]=merge(rs[x],y);pushup(x);return x;}else{ls[y]=merge(x,ls[y]);pushup(y);return y;}
}
void split(int rt,int &x,int &y,int k)
{if(!rt){x=y=0;return ;}if(k<=size[ls[rt]]){y=rt;split(ls[rt],x,ls[y],k);pushup(rt);}else{x=rt;split(rs[rt],rs[x],y,k-size[ls[rt]]-1);pushup(rt);}
}
void ins(int k,int val)
{split(root,a,b,k-1);split(b,b,c,1);split(c,c,d,1);int now=build(val);t[now]=s[now]=abs(v[now]-v[b]);if(b==0){t[now]=s[now]=1e9+7;}t[c]=s[c]=abs(v[c]-v[now]);if(c==0){t[c]=s[c]=1e9+7;}a=merge(a,b);a=merge(a,now);a=merge(a,c);root=merge(a,d);
}
void del(int k,int val)
{split(root,a,b,k-1);split(b,b,c,1);split(c,c,d,1);root=merge(a,d);ins(k-1,val);
}
int query_max(int l,int r)
{split(root,a,c,r);split(a,a,b,l-1);int now=mx[b]-mn[b];root=merge(merge(a,b),c);return now;
}
int query_min(int l,int r)
{l++;split(root,a,c,r);split(a,a,b,l-1);int now=t[b];root=merge(merge(a,b),c);return now;
}
int main()
{srand(12378);mx[0]=0;mn[0]=1e9+7;t[0]=1e9+7;v[0]=1e9+7;s[0]=1e9+7;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&x);if(i==1){root=build(x);t[root]=s[root]=1e9+7;}else{ins(i-1,x);}}while(m--){scanf("%s",ch);scanf("%d%d",&x,&y);if(ch[1]=='e'){del(x,y);}else if(ch[1]=='n'){ins(x,y);}else if(ch[1]=='a'){printf("%d\n",query_max(x,y));}else{printf("%d\n",query_min(x,y));}}
}
转载于:https://www.cnblogs.com/Khada-Jhin/p/9964656.html
BZOJ4864[BeiJing 2017 Wc]神秘物质——非旋转treap相关推荐
- bzoj4864: [BeiJing 2017 Wc]神秘物质
4864: [BeiJing 2017 Wc]神秘物质 Time Limit: 20 Sec Memory Limit: 256 MB Submit: 99 Solved: 56 [Submit] ...
- bzoj4864 [BeiJing 2017 Wc]神秘物质
(http://www.elijahqi.win/2018/01/26/bzoj4864-beijing-2017-wc%E7%A5%9E%E7%A7%98%E7%89%A9%E8%B4%A8/%20 ...
- BZOJ4864: [BeiJing 2017 Wc]神秘物质(Splay)
Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子.这 一天, 小诚刚从研究所得到了一块奇异的陨石样本, 便 ...
- 【BZOJ4864】[BeiJing 2017 Wc]神秘物质 Splay
[BZOJ4864][BeiJing 2017 Wc]神秘物质 Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微 ...
- BZOJ 4864: [BeiJing 2017 Wc]神秘物质 解题报告
4864: [BeiJing 2017 Wc]神秘物质 Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子. ...
- BZOJ_4864_[BeiJing 2017 Wc]神秘物质_Splay
BZOJ4864_[BeiJing 2017 Wc]神秘物质_Splay Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天 ...
- 4864: [BeiJing 2017 Wc]神秘物质
4864: [BeiJing 2017 Wc]神秘物质 Time Limit: 20 Sec Memory Limit: 256 MB Submit: 92 Solved: 50 [Submit][S ...
- [BZOJ]4864: [BeiJing 2017 Wc]神秘物质
题解: 操作1 分解为删除一个元素和修改一个元素的权值 操作2:插入一个元素 操作3:查询区间里面子区间的极差最大值 等价于直接求区间最大值减去区间最小值 操作4:查询区间子区间里面极差最小值 ...
- 【bzoj4864】[BeiJing 2017 Wc]神秘物质 Splay
原文地址:http://www.cnblogs.com/GXZlegend/p/6801631.html 题目描述 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借 ...
最新文章
- 遂宁专业计算机学校,遂宁计算机专业中职学校哪家强
- 全球科技大会鸿蒙,华为开发者大会:全球瞩目的“鸿蒙”面子和里子大格局
- 【深度学习】60题PyTorch简易入门指南,做技术的弄潮儿
- 一点通路由器模拟软件最新版_驾校宝典通最新版2020下载-驾校宝典通手机版 v1.0.2免费版...
- android hdmi开关,Android – 禁用HDMI
- 平面设计素材|现代色彩风格的海报设计
- eclipse编码方式、标签语言获取根目录
- 什么是IPS?如何对其进行调整?
- 论文参考文献生成以及标注方法说明
- Python如何批量把图片地址输入到浏览器上
- CSAPP实验四:性能优化实验(Perflab)
- java获取服务器ip地址_java中获取当前服务器的Ip地址的方法
- NeRF 源码分析解读(一)
- 【大数据开发】scala——tuple、list(含高阶方法)、wordcount案例、set、并行处理数据和sorted、sortBy、sortWith的区别
- 轻量级Qt键盘-实现篇
- uniapp使用高德地图定位(兼容app)
- Java基础学习总结(35)——Java正则表达式详解
- 基于POA搭建ETH联盟链
- 杂项 文件头文件尾总结
- 矩阵键盘一位数字密码锁,共阳极数码管