#include<stdio.h>
int Left[100005],Right[100005];
void link(int L,int R){
Right[L]=R;Left[R]=L;
}
int main(){
int n,m,cas=0;
while(scanf("%d%d",&n,&m)==2){
for(int i=1;i<=n;i++){
Left[i]=i-1;
Right[i]=(i+1)%(n+1);
}
Right[0]=1;Left[0]=n;
int op,X,Y,inv=0;
while(m--){
scanf("%d",&op);
if(op==4)inv=!inv;
else{
scanf("%d%d",&X,&Y);
//if(op==3&&Right[Y]==X)swap(X,Y);
if(op!=3&&inv)op=3-op;
if(op==1&&X==Left[Y])continue;
if(op==2&&X==Right[Y])continue;
int LX=Left[X],RX=Right[X],LY=Left[Y],RY=Right[Y];
if(op==1){
link(LX,RX);link(LY,X);link(X,Y);
}
else if(op==2){
link(LX,RX);link(Y,X);link(X,RY);
}
else if(op==3){
if(Right[Y]==X){int t=X;X=Y;Y=t; }
if(Right[X]==Y){link(LX,Y);link(Y,X);link(X,RY); }
else {link(LX,Y);link(Y,RX);link(LY,X);link(X,RY);}
}
}
}
int b=0;long long ans=0;
for(int i=1;i<=n;i++){
b=Right[b];
if(i%2==1)ans+=b;
}
if(inv&&n%2==0)ans=(long long)n*(n+1)/2-ans;
printf("Case %d: %lld\n",++cas,ans);
}
return 0;
}
#include<stdio.h>
#define M 100010
long long left[M],right[M],m,n,num,sum;
void link(long long x,long long y)
{
left[y]=x;
right[x]=y;
}
void init()
{
int i;
num=sum=0;
right[0]=1;
for(i=1;i<=n;i++)
{
left[i]=i-1;
right[i]=i+1;
}
left[n+1]=n;
}
int main()
{
long long i,h,x,y,t1,t2,count=1;
while(scanf("%lld%lld",&n,&m)!=EOF)
{
init();
for(i=1;i<=m;i++)
{
scanf("%lld",&h);
if(num%2!=0)
{
if(h==1)h=2;
else if(h==2)h=1;
}
if(h==4){num++;continue;}
scanf("%lld%lld",&x,&y);
if(h==1)
{
link(left[x],right[x]);
link(left[y],x);
link(x,y);
}
else if(h==2)
{
link(left[x],right[x]);
link(x,right[y]);
link(y,x);
}
else if(h==3)
{
if(left[y]==x)
{
link(left[x],y);
link(x,right[y]);
link(y,x);
continue;
}
if(left[x]==y)
{
link(left[y],x);
link(y,right[x]);
link(x,y);
continue;
}
t1=left[y];
t2=right[y];
link(left[x],right[x]);
link(left[x],y);
link(y,right[x]);
link(t1,t2);
link(t1,x);
link(x,t2);
}
}
if(num%2==0) for(i=1,y=0;i<=n;i++){
if(i%2)sum+=right[y];
y=right[y];
}
else for(i=1,y=n+1;i<=n;i++){
if(i%2)sum+=left[y];
y=left[y];
} printf("Case %lld: %lld\n",count++,sum);
}
return 0;
}
一行盒子,数组表示链表
最新推荐文章于 2021-08-25 21:28:32 发布