BZOJ4864 [BeiJing 2017 Wc]神秘物质
来源:互联网 发布:脸型测试软件免费下载 编辑:程序博客网 时间:2024/05/17 08:31
傻逼题……区间最小极差一定是相邻的两个元素所构成的
然后就维护一下区间最大最小值,最小极差,splay随便搞搞就行了
#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<ctime>#include<vector>#include<stack>#include<queue>#include<set>#include<bitset>#include<map>using namespace std;#define MAXN 200010#define MAXM 10010#define INF 1000000000#define MOD 1000000007#define ll long long#define eps 1e-8#define tr son[son[rt][1]][0]int fa[MAXN],son[MAXN][2],mn[MAXN],mx[MAXN],lv[MAXN],rv[MAXN],siz[MAXN],mnv[MAXN],v[MAXN];int rt,tot;int n,m;inline void ud(int x){ siz[x]=siz[son[x][0]]+siz[son[x][1]]+1; mn[x]=mx[x]=lv[x]=rv[x]=v[x]; mnv[x]=INF; if(son[x][0]){ mn[x]=min(mn[x],mn[son[x][0]]); mx[x]=max(mx[x],mx[son[x][0]]); mnv[x]=min(mnv[x],min(mnv[son[x][0]],abs(v[x]-rv[son[x][0]]))); lv[x]=lv[son[x][0]]; } if(son[x][1]){ mn[x]=min(mn[x],mn[son[x][1]]); mx[x]=max(mx[x],mx[son[x][1]]); mnv[x]=min(mnv[x],min(mnv[son[x][1]],abs(v[x]-lv[son[x][1]]))); rv[x]=rv[son[x][1]]; }}inline void cot(int x,int y,bool z){ if(x){ fa[x]=y; } if(y){ son[y][z]=x; }}inline void rot(int x,bool z){ int xx=fa[x],xxx=fa[xx]; cot(son[x][z],xx,z^1); cot(x,xxx,son[xxx][1]==xx); cot(xx,x,z); ud(xx);}void splay(int x,int y){ int xx=fa[x],xxx=fa[xx]; while(xx!=y){ if(xxx==y){ rot(x,son[xx][0]==x); }else{ bool z=son[xxx][0]==xx; if(son[xx][z]==x){ rot(x,z^1); rot(x,z); }else{ rot(xx,z); rot(x,z); } } xx=fa[x],xxx=fa[xx]; } ud(x); if(!y){ rt=x; }}int find(int x,int y){ if(siz[son[x][0]]+1==y){ return x; } if(y<=siz[son[x][0]]){ return find(son[x][0],y); }else{ return find(son[x][1],y-siz[son[x][0]]-1); }}inline void pick(int x,int y){ splay(find(rt,x),0); splay(find(rt,y+2),rt);}inline void UD(){ ud(son[rt][1]); ud(rt);}void ins(int x){ tr=++tot; v[tr]=x; ud(tr); fa[tr]=son[rt][1]; UD();}int main(){ int i,x,y; char o[10]; scanf("%d%d",&n,&m); rt=++tot; son[rt][1]=++tot; fa[tot]=1; UD(); for(i=0;i<n;i++){ scanf("%d",&x); pick(i+1,i); ins(x); } while(m--){ scanf("%s%d%d",o,&x,&y); if(o[1]=='e'){ pick(x,x+1); ins(y); } if(o[1]=='n'){ pick(x+1,x); ins(y); } if(o[1]=='a'){ pick(x,y); printf("%d\n",mx[tr]-mn[tr]); } if(o[1]=='i'){ pick(x,y); printf("%d\n",mnv[tr]); } } return 0;} /*4 35 8 10 2max 1 3min 1 3max 2 4 */
0 0
- BZOJ4864 [BeiJing 2017 Wc]神秘物质
- [BZOJ4864][BeiJing 2017 Wc]神秘物质(splay)
- 4864: [BeiJing 2017 Wc]神秘物质
- bzoj 4864: [BeiJing 2017 Wc]神秘物质 splay
- bzoj 4864: [BeiJing 2017 Wc]神秘物质 (splay)
- [bzoj4864]神秘物质
- 神秘物质
- 【JZOJ 4986】 神秘物质
- 【JZOJ 4986】神秘物质
- JZOJ4986. 神秘物质
- [BJWC2017]神秘物质 Treap
- splay jzoj4986 神秘物质
- [BJWC2017][JZOJ4986]神秘物质
- 【GDOI2017模拟2.25】神秘物质
- [JZOJ4986] 神秘物质(splay模板)
- [2010Beijing wc]矩阵距离
- [2010Beijing Wc]外星联络
- [2010Beijing Wc]外星联络 后缀数组
- metasploit魔鬼训练营第一章实践作业
- Error:Execution failed for task ':app:mergeDebugResources'. > Error: java.ut
- oracle 的sys 和 system 账号
- 栈的压入、弹出序列
- Member Function的调用方式
- BZOJ4864 [BeiJing 2017 Wc]神秘物质
- JavaWeb--Servlet过滤器Filter和SpringMVC的HandlerInterceptor(Session和Cookie登录认证)
- SuperMap Objects .NET 中更新方法的使用
- C++的扩充
- MySql查询IF和CASE条件判断使用
- 单页面网站如何做seo关键词优化
- 第一个博客(文章标题在这里)
- DOM 优化
- WINHEX手工最快恢复2断MOV的操作流程