[BZOJ]4864: [BeiJing 2017 Wc]神秘物质
题解: 操作1 分解为删除一个元素和修改一个元素的权值
操作2:插入一个元素
操作3:查询区间里面子区间的极差最大值 等价于直接求区间最大值减去区间最小值
操作4:查询区间子区间里面极差最小值 首先明确 极差的最小值只会是相邻元素产生 证明如下(假如 相邻元素x,y,z 若极差最小值来源于z-x 那么必然 满足x<y<z 但显然 在这种情况下 z-y优于z-x 所以推出极差最小值只会是相邻元素产生)
推到这里就是splay裸题了
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#include <cmath>
#include <set>
#include <map>
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define link(x) for(edge *j=h[x];j;j=j->next)
#define inc(i,l,r) for(int i=l;i<=r;i++)
#define dec(i,r,l) for(int i=r;i>=l;i--)
const int MAXN=3e5+10;
const double eps=1e-8;
#define ll long long
const int inf=2e9;
using namespace std;
struct edge{int t,v;edge*next;}e[MAXN<<1],*h[MAXN],*o=e;
void add(int x,int y,int vul){o->t=y;o->v=vul;o->next=h[x];h[x]=o++;}
ll read(){ll x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();return x*f;
}int pre[MAXN],ch[MAXN][2],key[MAXN],lk[MAXN],rk[MAXN],minn[MAXN],maxx[MAXN],Lmin[MAXN],sz[MAXN];
int cnt,rt;
void Treavel(int x)
{if(x){Treavel(ch[x][0]);printf("结点%2d:左儿子 %2d 右儿子 %2d 父结点 %2d size=%2d key=%2d\n",x,ch[x][0],ch[x][1],pre[x],sz[x],key[x]);Treavel(ch[x][1]);}
}
void debug(int rp)
{printf("root:%d\n",rp);Treavel(rp);
}
void newnode(int &x,int t,int fa){x=++cnt;pre[x]=fa;ch[x][0]=ch[x][1]=0;key[x]=lk[x]=rk[x]=t;minn[x]=maxx[x]=t;Lmin[x]=inf;sz[x]=1;
}void up(int x){sz[x]=sz[ch[x][0]]+sz[ch[x][1]]+1;minn[x]=maxx[x]=key[x];Lmin[x]=inf;lk[x]=rk[x]=key[x];if(ch[x][0])lk[x]=lk[ch[x][0]],minn[x]=min(minn[x],minn[ch[x][0]]),maxx[x]=max(maxx[x],maxx[ch[x][0]]),Lmin[x]=min(min(Lmin[x],abs(rk[ch[x][0]]-key[x])),Lmin[ch[x][0]]);if(ch[x][1])rk[x]=rk[ch[x][1]],minn[x]=min(minn[x],minn[ch[x][1]]),maxx[x]=max(maxx[x],maxx[ch[x][1]]),Lmin[x]=min(min(Lmin[x],abs(lk[ch[x][1]]-key[x])),Lmin[ch[x][1]]);
}void rotate(int x,int kind){int y=pre[x];pre[ch[x][kind]]=y;ch[y][!kind]=ch[x][kind];if(pre[y])ch[pre[y]][ch[pre[y]][1]==y]=x;pre[x]=pre[y];ch[x][kind]=y;pre[y]=x;up(y);
}void splay(int x,int goal){while(pre[x]!=goal){if(pre[pre[x]]==goal)rotate(x,ch[pre[x]][0]==x);else{int y=pre[x];int kind=ch[pre[y]][0]==y;if(ch[y][kind]==x)rotate(x,!kind),rotate(x,kind);else rotate(y,kind),rotate(x,kind);}}if(goal==0)rt=x;up(x);
}int find1(int x,int k){if(k==sz[ch[x][0]]+1)return x;else if(k<=sz[ch[x][0]])return find1(ch[x][0],k);else return find1(ch[x][1],k-sz[ch[x][0]]-1);
}void merge(int x,int e){splay(find1(rt,x+1),0);splay(find1(rt,x+3),rt);ch[ch[rt][1]][0]=0;key[rt]=e;up(ch[rt][1]);up(rt);
}void insert(int x,int e){splay(find1(rt,x+1),0);splay(find1(rt,x+2),rt);newnode(ch[ch[rt][1]][0],e,ch[rt][1]);up(ch[rt][1]);up(rt);
}void Max(int x,int y){splay(find1(rt,x),0);splay(find1(rt,y+2),rt);int t=ch[ch[rt][1]][0];printf("%d\n",maxx[t]-minn[t]);
}void Min(int x,int y){splay(find1(rt,x),0);splay(find1(rt,y+2),rt);int t=ch[ch[rt][1]][0];printf("%d\n",Lmin[t]);
}int a[MAXN],n,m;void built(int &x,int l,int r,int y){if(l>r)return ;int mid=(l+r)>>1;newnode(x,a[mid],y);built(ch[x][0],l,mid-1,x);built(ch[x][1],mid+1,r,x);up(x);
}void inte(){newnode(rt,0,0);newnode(ch[rt][1],0,rt);built(ch[ch[rt][1]][0],1,n,ch[rt][1]);up(ch[rt][1]);up(rt);
}int main(){n=read();m=read();cnt=0;inc(i,1,n)a[i]=read();inte();int x,y;char str[11];while(m--){scanf("%s",str);x=read();y=read();if(str[1]=='e')merge(x,y);else if(str[0]=='i')insert(x,y);else if(str[1]=='a')Max(x,y);else Min(x,y);}return 0;
}
4864: [BeiJing 2017 Wc]神秘物质
Time Limit: 20 Sec Memory Limit: 256 MB
Submit: 453 Solved: 205
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
5 8 10 2
max 1 3
min 1 3
max 2 4
Sample Output
转载于:https://www.cnblogs.com/wang9897/p/10340242.html
[BZOJ]4864: [BeiJing 2017 Wc]神秘物质相关推荐
- BZOJ 4864: [BeiJing 2017 Wc]神秘物质 解题报告
4864: [BeiJing 2017 Wc]神秘物质 Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子. ...
- BZOJ 4864: [BeiJing 2017 Wc]神秘物质
Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子.这 一天, 小诚刚从研究所得到了一块奇异的陨石样本, 便 ...
- bzoj 4864: [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 ...
- 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]神秘物质 Splay
[BZOJ4864][BeiJing 2017 Wc]神秘物质 Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微 ...
- BZOJ_4864_[BeiJing 2017 Wc]神秘物质_Splay
BZOJ4864_[BeiJing 2017 Wc]神秘物质_Splay Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天 ...
- 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]神秘物质——非旋转treap
题目描述 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子.这 一天, 小诚刚从研究所得到了一块奇异的陨石样本, 便迫不及待地开始 ...
最新文章
- 一款高颜值的MySQL管理工具:Sequel Pro
- where 1=1 是什么鬼?
- common-IO.jar相关
- String.getBytes()和new String()
- mac 10.10 apache php,在Mac上10分钟搞定Apache服务器配置
- mysql5.7.24 安装步骤_MySQL5.7.24解压版安装步骤
- macos必做的设置_如何在MacOS上设置PHP,CaddyServer和Kirby —以及为什么要这样做
- [开源]快速构建文件下载,支持文件加密,自定义限速
- cocos2dx 交叉编译 iconv库 protobuf库
- UGUI的表格布局组件
- Activiti7事件监听
- ui自动化模拟键盘按键
- 大型仿人机器人的技术难点和应用情况
- flash和js通过什么类进行交互?
- 计算机网络术语sonet,SONET
- Linux学习(CentOS-7)---Linux开机流程
- 黑科技!无需代码快速搭建网站的平台来了
- 新一代人工智能产业八大主要应用场景研判
- python爬取京东手机参数_python爬虫——分页爬取京东商城商品信息(手机为例)...
- 在OpenBSD上架设安全的小型网络
热门文章
- HotSpot 术语表翻译(JVM)
- Linux命令练习(四)
- c语言1087答案,1087 有多少不同的值(C语言)
- 纸上得来终觉浅 绝知此事要躬行
- OpenCV中的神经网络
- Android 动画总结
- python用角度计算余弦值_Python 使用sklearn计算余弦相似度
- SA-Siam:用于实时目标跟踪的双重连体网络A Twofold Siamese Network for Real-Time Object Tracking
- 用HBuilder X编辑器打开的网页出现中文乱码
- 利用Python+opencv进行视频文件的读取和保存,打开笔记本摄像头拍照保存、图像在窗口显示等操作