[bzoj4864]神秘物质
来源:互联网 发布:python拷贝文件 编辑:程序博客网 时间:2024/04/28 03:24
题目描述
裸题
容易观察最小是在相邻差间取最小
最大直接就是最大减最小
那些加加删删的splay维护一下就好了
#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)#define min(a,b) (a<b?a:b)#define max(a,b) (a>b?a:b)using namespace std;const int maxn=100000+10,inf=2000000000;int key[maxn*2],val[maxn*2],size[maxn*2],mx[maxn*2],mi[maxn*2],num[maxn*2],father[maxn*2],tree[maxn*2][2];int sta[80];int i,j,k,u,v,w,l,r,t,n,m,tot,top,root,ans;char ch;int read(){ int x=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9'){ if (ch=='-') f=-1; ch=getchar(); } while (ch>='0'&&ch<='9'){ x=x*10+ch-'0'; ch=getchar(); } return x*f;}char get(){ char ch=getchar(); while (ch!='m'&&ch!='e'&&ch!='i'&&ch!='n'&&ch!='a') ch=getchar(); return ch;}int pd(int x){ return tree[father[x]][1]==x;}void update(int x){ num[x]=val[x]; mx[x]=mi[x]=key[x]; if (tree[x][0]){ num[x]=min(num[x],num[tree[x][0]]); mx[x]=max(mx[x],mx[tree[x][0]]); mi[x]=min(mi[x],mi[tree[x][0]]); } if (tree[x][1]){ num[x]=min(num[x],num[tree[x][1]]); mx[x]=max(mx[x],mx[tree[x][1]]); mi[x]=min(mi[x],mi[tree[x][1]]); } size[x]=size[tree[x][0]]+size[tree[x][1]]+1;}void rotate(int x){ int y=father[x],z=pd(x); father[x]=father[y]; if (father[y]) tree[father[y]][pd(y)]=x; tree[y][z]=tree[x][1-z]; if (tree[x][1-z]) father[tree[x][1-z]]=y; tree[x][1-z]=y; father[y]=x; update(y); update(x); if (root==y) root=x;}void splay(int x,int y){ while (father[x]!=y){ if (father[father[x]]!=y) if (pd(x)==pd(father[x])) rotate(father[x]);else rotate(x); rotate(x); }}int kth(int x,int y){ if (size[tree[x][0]]+1==y) return x; else if (size[tree[x][0]]+1>y) return kth(tree[x][0],y); else return kth(tree[x][1],y-size[tree[x][0]]-1);}void write(int x){ if (!x){ putchar('0'); putchar('\n'); return; } top=0; while (x){ sta[++top]=x%10; x/=10; } while (top) putchar('0'+sta[top--]); putchar('\n');}int main(){ //freopen("data.in","r",stdin);freopen("data.out","w",stdout); n=read();m=read(); tot=n; fo(i,1,n){ key[i]=read(); if (i>1) val[i]=abs(key[i]-key[i-1]);else val[i]=inf; } fd(i,n,1){ update(i); father[i]=i-1; if (i>1) tree[i-1][1]=i; } root=1; while (m--){ ch=get(); if (ch=='m'){ ch=get(); if (ch=='e'){ j=read();k=read(); u=kth(root,j); splay(u,0); v=kth(tree[u][1],1); splay(v,u); if (tree[v][1]){ w=kth(tree[v][1],1); splay(w,v); val[w]=abs(key[w]-k); update(w); } tree[u][1]=tree[v][1]; if (tree[v][1]) father[tree[v][1]]=u; key[u]=k; if (tree[u][0]){ w=kth(tree[u][0],size[tree[u][0]]); splay(w,u); val[u]=abs(key[w]-key[u]); } else val[u]=inf; update(u); } else if (ch=='i'){ l=read();r=read(); u=kth(root,r); splay(u,0); if (l+1==r){ write(val[u]); continue; } v=kth(tree[u][0],l+1); splay(v,u); ans=val[u]; ans=min(ans,val[v]); if (tree[v][1]) ans=min(ans,num[tree[v][1]]); write(ans); } else{ l=read();r=read(); u=kth(root,r); splay(u,0); v=kth(tree[u][0],l); splay(v,u); j=k=key[u]; j=max(j,key[v]); k=min(k,key[v]); if (tree[v][1]){ j=max(j,mx[tree[v][1]]); k=min(k,mi[tree[v][1]]); } write(j-k); } } else{ j=read();k=read(); u=kth(root,j); splay(u,0); key[++tot]=k; if (tree[u][1]){ v=kth(tree[u][1],1); splay(v,u); val[v]=abs(key[v]-k); update(v); } if (tree[u][1]) father[tree[u][1]]=tot; tree[tot][1]=tree[u][1]; tree[u][1]=tot; father[tot]=u; val[tot]=abs(key[u]-k); update(tot); update(u); } }}
0 0
- [bzoj4864]神秘物质
- BZOJ4864 [BeiJing 2017 Wc]神秘物质
- [BZOJ4864][BeiJing 2017 Wc]神秘物质(splay)
- 神秘物质
- 【JZOJ 4986】 神秘物质
- 【JZOJ 4986】神秘物质
- JZOJ4986. 神秘物质
- [BJWC2017]神秘物质 Treap
- splay jzoj4986 神秘物质
- [BJWC2017][JZOJ4986]神秘物质
- 【GDOI2017模拟2.25】神秘物质
- [JZOJ4986] 神秘物质(splay模板)
- 4864: [BeiJing 2017 Wc]神秘物质
- 暗物质是宇宙中最为神秘的物质之一
- bzoj 4864: [BeiJing 2017 Wc]神秘物质 splay
- bzoj 4864: [BeiJing 2017 Wc]神秘物质 (splay)
- jzoj 4986. 【GDOI2017模拟2.25】神秘物质 可持久化treap
- 神秘
- 【持续更新】qt学习笔记(1)
- fail2ban防止ssh暴力破解
- 2008Noip解题报告
- JDBC连接MySQL数据库并取出数据库中数据
- 【Leetcode】380. Insert Delete GetRandom O(1)
- [bzoj4864]神秘物质
- Google V8解释器(代号Ignition)设计文档的阅读感想
- 初学java的小总结
- mysql 中 ``反引号的作用
- oracle服务器自动备份
- 解决phpmyadmin配置文件的权限问题
- Linux chown命令详解
- ffmpeg开发环境搭建--(window)
- 最简单的Struts2下载图片实例