救救孩子

P3391 【模板】文艺平衡树

_pzy_ @ 2019-07-28 20:32:37

BZOJ AC LOJ + 洛谷 TLE+RE 同一份代码,差距好大。。。

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e5+5;
struct node{
    int val,cnt,ch[2],sz,f,tag;
}t[N<<1];
int tot,rt,n,m;
inline void pushup(int x) {t[x].sz=t[t[x].ch[0]].sz+t[t[x].ch[1]].sz+t[x].cnt;}
inline int get(int x) {return x==t[t[x].f].ch[1];}
inline void pushdown(int x)
{
    if(t[x].tag)
    {
        t[t[x].ch[0]].tag^=1,t[t[x].ch[1]].tag^=1;
        swap(t[x].ch[0],t[x].ch[1]),t[x].tag=0;
    }
}
inline void rotate(int x)
{
    int y=t[x].f,z=t[y].f,k=get(x);
    t[z].ch[get(y)]=x,t[x].f=z;
    t[y].ch[k]=t[x].ch[k^1],t[t[x].ch[k^1]].f=y;
    t[x].ch[k^1]=y,t[y].f=x;
    pushup(y),pushup(x);
}
inline void splay(int x,int s)
{
    while(t[x].f!=s)
    {
        int y=t[x].f,z=t[y].f;
        if(z!=s) (x==t[y].ch[0])^(y==t[z].ch[0])?rotate(x):rotate(y);
        rotate(x);
    }
    if(!s) rt=x;
}
inline void insert(int x)
{
    int u=rt,f=0;
    while(t[u].val!=x && u)
    {
        f=u;
        u=t[u].ch[x>t[u].val];
    }
    if(u) ++t[u].cnt;
    else
    {
        u=++tot;
        if(f) t[f].ch[x>t[f].val]=u;
        t[u].ch[0]=t[u].ch[1]=0;
        t[tot].sz=t[tot].cnt=1;
        t[tot].val=x,t[tot].f=f;
    }
    splay(u,0);
}
inline int kth(int x)
{
    int u=rt;
    while(1)
    {
        pushdown(u);
        int v=t[u].ch[0];
        if(x>t[u].cnt+t[v].sz)
        {
            x-=t[u].cnt+t[v].sz;
            u=t[u].ch[1];
        }
        else if(x<=t[v].sz && v) u=v;
        else return u;
    }
}
inline int Reverse(int l,int r)
{
    int x=kth(l),y=kth(r+2);
    splay(x,0),splay(y,x);
    t[t[y].ch[0]].tag^=1;
}
inline void print(int x)
{
    pushdown(x);
    if(t[x].ch[0]) print(t[x].ch[0]);
    if(t[x].val && t[x].val<=n) printf("%d ",t[x].val);
    if(t[x].ch[1]) print(t[x].ch[1]);
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=0;i<=n+2;++i) insert(i);
    for(int i=1;i<=m;++i)
    {
        int a,b;scanf("%d%d",&a,&b);
        Reverse(a,b);
    }
    print(rt);
    return 0;
}

by mol茶蛋糕 @ 2019-07-28 20:41:42

%%%%% Orz Orz


by Hello,yearning @ 2019-07-28 20:58:33

%%%%%%%


by Hello,yearning @ 2019-07-28 20:59:38

@pzy %%%%%%%


by Shinku721 @ 2019-07-28 21:02:47

STO ORZ


by _pzy_ @ 2019-07-28 21:07:05

@Flandre的Scarlet 大佬别装弱了,快帮帮本蒟蒻


by Shinku721 @ 2019-07-28 21:15:36

你还会splay我连treap都写不好ORZ


by くろねこ @ 2019-07-30 14:17:08

@Flandre的Scarlet 只会写fhq treap的dalao%%%%%%


by くろねこ @ 2019-07-30 14:17:41

@pzy 好巧我也是..


by _pzy_ @ 2019-07-31 09:17:02

@くろねこ我连LOJ都过不了嘤嘤嘤


|