splay缩点。

#include<cstdio>
#define M (i+j>>1)
const int N=20005;
typedef struct node*ptr;
struct node{
ptr i,j;int l,r,s;
int foo(){return i->s+r-l+1;}
ptr up(){
s=foo()+j->s;return this;
}
}e[N*6];
ptr a=e;
ptr pre(int*z,int i,int j){
if(i>j)return e;
node s={pre(z,i,M-1),pre(z,M+1,j),z[M],z[M]};
return(*++a=s).up();
}
void zig(ptr&o,ptr&s){ptr t=o->i;o->i=s,s=o->up(),o=t;}
void zag(ptr&o,ptr&s){ptr t=o->j;o->j=s,s=o->up(),o=t;}
ptr splay(int z,ptr&o){
ptr s=e,t=e;
while(1)
if(z<=o->i->s){
if(z<=o->i->i->s)zig(o,o->i->j);
zig(o,s);
}else if(z>o->foo()){
z-=o->foo();
if(z>o->j->foo())
z-=o->j->foo(),zag(o,o->j->i);
zag(o,t);
}else{
z+=o->l-o->i->s-1;
if(o->l!=z)
o->i=(*++a=(node){o->i,e,o->l,z-1}).up(),o->l=z;
if(o->r!=z)
o->j=(*++a=(node){e,o->j,z+1,o->r}).up(),o->r=z;
break;
}
while(s!=e)zig(s,o->j);
while(t!=e)zag(t,o->i);
return o->up();
}
ptr&splay(int s,int t,ptr&r){
splay(s,r);
return splay(t-s+2,r->j)->i;
}
int main(){
int n,m,c,p,s,t;
static int z[N];
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
scanf("%d",z+i);
ptr r=pre(z,0,n+1);
while(m--){
scanf("%d%d",&c,&p);
if(c==2)
printf("%d\n",splay(p+1,r)->l);
else{
scanf("%d",&s);
if(c==1)splay(p,s,r)=e;
else{
scanf("%d",&t);
splay(p+1,p,r)=(*++a=(node){e,e,s,t}).up();
}
}
}
}

BZOJ3678: wangxz与OJ的更多相关文章

  1. BZOJ3678 wangxz与OJ (平衡树 无旋treap)

    题面 维护一个序列,支持以下操作: 1.在某个位置插入一段值连续的数. 2.删除在当前序列位置连续的一段数. 3.查询某个位置的数是多少. 题解 显然平衡树,一个点维护一段值连续的数,如果插入或者删除 ...

  2. 【BZOJ3678】wangxz与OJ Splay

    [BZOJ3678]wangxz与OJ Description 某天,wangxz神犇来到了一个信息学在线评测系统(Online Judge).由于他是一位哲♂学的神犇,所以他不打算做题.他发现这些题 ...

  3. bzoj 3678 wangxz与OJ

    3678: wangxz与OJ Time Limit: 10 Sec  Memory Limit: 128 MBhttp://www.lydsy.com/JudgeOnline/problem.php ...

  4. 【bzoj3678】wangxz与OJ

    Portal -- > bzoj 3678 Solution 这题==真实智力康复qwq 然而众多神犇都说是10min写完的题我..可能写了近1h吧==深深感受到自己的弱小qwq (丢上来是因为 ...

  5. 【BZOJ3678】Wangxz和OJ

    题意: 不想讲 题解: Rope真香! 正解是Splay缩点,访问时再拆成一个序列 代码: //STL dafa good! #include<algorithm> #include< ...

  6. [BZOJ3678]wangxz与OJ-[Splay一类的平衡树]

    Description 传送门 Solution 直接splay搞定吧..似乎非旋treap也ok? 我已经菜到模板题都写不出来了qaq Code #include<iostream> # ...

  7. NOIp2018模拟赛三十六

    好久没打模拟赛了...今天一样是两道国集,一道bzoj题 成绩:13+0+95=108 A题开始看错题了...导致样例都没看懂,结果xfz提醒我后我理解了一个我自认为正确的题意(事实证明我和xfz都错 ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. Online Judge(OJ)搭建(第一版)

    搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...

随机推荐

  1. [BZOJ1854][Scoi2010]游戏(二分图匹配/并查集)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1854 分析:很裸的一道二分图匹配对吧,但是在hzwer的blog上看见神奇的并查集做法 ...

  2. 屠龙之路_战胜View&对DataBase猛烈进攻_ThirdDay

    避开狮身人面兽攻击的屠龙战士继续前行.突然眼见一黑,战士们进到迷宫里,机智的战士用一根羊毛线绑在迷宫入口处,少年们手握着羊毛线,在迷宫里继续前行.在那样一个拐角处,遇到了恶龙的手下View&D ...

  3. Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'orderdetails' of 'class com.luchao.mybatis.first.po.Orders' with value 'Orderdetail [id=null, ordersId=3, itemsId=1, it

    从上面异常的解释来看是因为反射不能将Orders设置到orderdetails属性上,仔细检查了MyBatis的配置文件,发现: <collection property="order ...

  4. linux安装软件的学习

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  5. Java--剑指offer(7)

    31.求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.AC ...

  6. 标题栏ToolBar

    使用标题栏ToolBar 首先需要在AndroidManifest.xml中修改 application主题或者activity主题       隐藏原生标题栏 在styles.xml中自定义主题 a ...

  7. eclipse汉化

    一.准备工作: 1.eclipse点击help——about eclipse查看软件版本,如图: 2.登录官网语言包下载地址:http://www.eclipse.org/babel/download ...

  8. 【BZOJ 2434】【NOI 2011】阿狸的打字机 fail树

    完全不会啊,看题解还看了好久,我是蒟蒻$QAQ$ $zyf$的题解挺好的:http://blog.csdn.net/clove_unique/article/details/51059425 $fai ...

  9. javascript 数组实例

    在遍历数组时, 如果想要排除 null / undefined 和 不存在的元素时,代码如下: for ( var i = 0; i < a.length; i++ ){ //跳过null / ...

  10. mysql-case ... when...then...else...end处理判断赋值机制

    then jrkp else zrspj end ))/(case zrspj then jrkp else zrspj end ) zdf from hqxg order by zdf LIMIT ...