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. 日志记录类库log4net的使用总结

    log4net是一个开源的日志记录类库,经过配置后可以自动抓取程序中的错误.异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作,比如:通知某人右键.写入数据库等.这里写个ASP.NET MVC ...

  2. social emotion computing-感情的分类

    第八节  情感的分类 人的情感复杂多样,可以从不同的观察角度进行分类.由于情感的核心内容是价值,因此人的情感主要必须根据它所反映的价值关系的运动与变化的不同特点来进行分类. 1.根据价值的正负变化方向 ...

  3. SSH框架 sequence diagram

  4. htop查看系统负载

    htop 是 Linux 系统中的一个互动进程查看器,可以让用户进行交互式操作,可横向或纵向滚动浏览进程列表,支持鼠标操作.用户可以在安装 htop 来监控服务器的负载. 01.下载 https:// ...

  5. PHP配置详解

    [PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; This file controls many aspects of ...

  6. PHP值传递和引用传递的区别

    PHP值传递和引用传递的区别.什么时候传值什么时候传引用 (1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略 (2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 (3)优 ...

  7. springMVC之web.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  8. bootstarp风格的toggle效果分享

    最近在写项目的时候想要一个这样的效果: 我知道这个效果在 flat-ui中有, 但是我又不想引用一整个flat-ui; 这个效果依赖html5的transition, 所以浏览器兼容成问题: 从fla ...

  9. php COOKIE和SESSION的一些理解

    web服务器是基于http协议的,而http协议是无状态的,导致任意两个请求之间没有联系.但是我们登录网站后,它却能记住我们的身份,这个过程中一定使用了某个标识来区别我们的身份.对于简单数据传输的我们 ...

  10. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...