xiaolou @ 2019-03-28 20:15:59
挑出来了好几个问题,但是样例还是RE。。。
#include <bits/stdc++.h>
using namespace std;
struct Node
{
int sz,v,d,f;
Node *s[2],*fa;
}pool[100005],*root;
int Size(Node *p)
{
int size=1;
if(p==NULL)
{
return 0;
}
if(p->s[0])
{
size+=p->s[0]->sz;
}
if(p->s[1])
{
size+=p->s[1]->sz;
}
return size;
}
void Pushdown(Node *p)
{
if(p->f==1&&p!=NULL)
{
swap(p->s[0],p->s[1]);
if(p->s[0])
{
p->s[0]->f=1-p->s[0]->f;
}
if(p->s[1])
{
p->s[1]->f=1-p->s[1]->f;
}
p->f=0;
}
}
void Update(Node *p)
{
p->sz=Size(p->s[0])+Size(p->s[1])+1 ;
}
void Rotate(Node *p)
{
int k=(p->fa->s[1]==p);
Node *fa=p->fa;
Node *gf=p->fa->fa;
Node *son=p->s[!k];
fa->s[k]=son;
if(son)
{
son->fa=fa;
}
fa->fa=p;
p->s[!k]=fa;
p->fa=gf;
if(gf)
{
if(gf->s[1]==fa)
{
gf->s[1]=p;
}
else
{
gf->s[0]=p;
}
}
if(root==fa)
{
root=p;
}
Update(fa);
Update(p);
}
Node *Kth(Node *p,int x)
{
Pushdown(p);
if(Size(p->s[0])+1==x)
{
return p;
}
else if(Size(p->s[0])+1>x)
{
return Kth(p->s[0],x);
}
else
{
return Kth(p->s[1],x-Size(p->s[0])-1);
}
}
void Splay(Node *p,Node *target)
{
while(p->fa!=target)
{
if(p->fa->fa==target)
{
Rotate(p);
}
else
{
Node *fa=p->fa,*gp=fa->fa;
int k=(gp->s[1]==fa);
if(fa->s[k]==p)
{
Rotate(fa);
Rotate(p);
}
else
{
Rotate(p);
Rotate(p);
}
}
}
}
int cnt=0;
void Reverse(int x,int y)
{
Node *l=Kth(root,x-1);
Node *r=Kth(root,y+1);
Splay(l,NULL);
Splay(r,root);
if(root->s[1]->s[0])
{
root->s[1]->s[0]->f^=1;
}
}
void Inorder(Node *p)
{
if(p->s[0])
{
Inorder(p->s[0]);
}
printf("%d ",p->v);
if(p->s[1])
{
Inorder(p->s[1]);
}
}
void Insert(int x)
{
Node *p=&pool[++cnt];
Node *p1=Kth(root,x-1);
Splay(p1,NULL);
root->s[1]=p;
p->v=x;
p->d=x+1;
p->sz=1;
p->fa=root;
Update(p);
Update(root);
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
root=&pool[++cnt];
root->v=-100000000;
root->d=1;
root->sz=1;
for(int i=2;i<=n+2;++i)
{
Insert(i);
}
for(int i=1;i<=m;++i)
{
int a,b;
cin >> a >> b;
Reverse(a,b);
}
Inorder(root);
return 0;
}
by ecnerwaIa @ 2019-03-28 20:31:38
@xiaolou 我来了
by ecnerwaIa @ 2019-03-28 20:33:38
@xiaolou size()函数不要,因为你写了sz
by ecnerwaIa @ 2019-03-28 20:36:09
@xiaolou 你代码的问题不是一点啊
by Leap_Frog @ 2019-03-28 21:26:45
%%%%%%%%%%%%
%%%%%%%%%%%%
%%%%%%%%%%%%
by Leap_Frog @ 2019-03-28 21:26:58
太强了!!!