TLE求助!!!
查看原帖
TLE求助!!!
678236
dreamandzhushen楼主2023/1/12 20:25
#include<bits/stdc++.h>
using namespace std;
const int maxn=200000+5;
typedef unsigned long long AC;
AC box[maxn];
AC nxt[maxn];
AC data[maxn]; 
AC prv[maxn];
bool rev;
AC n,m;
int main()
{
//	freopen("AC.out","w",stdout);
	AC kas=0;
	while((scanf("%d%d",&n,&m))==2)
	{
		for(int i=1;i<=n;i++)
		{
			prv[i]=i-1;
			nxt[i]=i+1%(n+1);
		}
		nxt[0]=1;
		prv[0]=n;
		rev=false;
		AC x,y;
		AC op;
		while(m--)
		{
			cin>>op;
			if(rev&&op<=2) op=3-op;
			if(op==4)
			{
				rev=!rev;
			}
			else if(op==1)
			{
				cin>>x>>y;
				if(prv[y]==x)
				{
					continue;
				}
				int px=prv[x];
				int nx=nxt[x];
				int py=prv[y];
				int ny=nxt[y];
				nxt[px]=nx;
				prv[nx]=px;
				
				nxt[x]=y;
				prv[x]=py;
				nxt[py]=x;
				prv[y]=x;
			}
			else if(op==2)
			{
				cin>>x>>y;
				if(prv[y]==x)
				{
					continue;
				}
				int px=prv[x];
				int nx=nxt[x];
				int py=prv[y];
				int ny=nxt[y];
				nxt[px]=nx;
				prv[nx]=px;
				
				nxt[x]=ny;
				prv[x]=y;
				prv[ny]=x;
				nxt[y]=x;
			} 
			else if(op==3)
			{
				cin>>x>>y;
				if(prv[y]==x)
				{
					continue;
				}
				int px=prv[x];
				int nx=nxt[x];
				int py=prv[y];
				int ny=nxt[y];
				if(nxt[x]==y)
				{
					nxt[px]=nx;
					prv[nx]=px;
					nxt[x]=ny;
					prv[x]=y;
					prv[ny]=x;
					nxt[y]=x;
				}
				else
				{
					prv[x]=py;
					nxt[x]=ny;
					prv[ny]=x;
					nxt[px]=y;
					prv[y]=px;
					nxt[y]=nx;
					nxt[px]=y;
					prv[ny]=py;
				}
			} 
		
		}
		AC sum=0,k=0;
		for(long long i=0;i<=n;i++)
		{
			
			k=nxt[k];
			if(i%2==1)sum+=i;
		}
		if(rev&&n%2==0)sum=n*(1+n)/2-sum;
		cout<<"Case "<<++kas<<": "<<sum<<endl;
		sum=0;
	}
} 
2023/1/12 20:25
加载中...