思路:刘大爷真的强
#include<iostream>
using namespace std;
const int MAXN = 1e5+6;
int Right[MAXN];
int Left[MAXN];
void Link(int L,int R)
{
Right[L] = R;
Left[R] = L;
}
int main()
{
int n,m;
int kase = 0;
while(scanf("%d %d",&n,&m)==2)
{
for(int i=1;i<=n;i++)
{
Right[i] = (i+1)%(n+1);
Left[i] = i - 1;
}
Right[0] = 1;
Left[0] = n;
int op;
int inv = 0;
int x,y;
while(m--)
{
cin>>op;
if(op==4) inv = !inv;
else
{
cin>>x>>y;
if(op!=3&&inv) op = 3 - op;
if(op==1&&Right[x]==y) continue;
if(op==2&&Right[y]==x) continue;
int Rx = Right[x],Lx = Left[x],Ly = Left[y],Ry = Right[y];
if(op==1)
{
Link(Lx,Rx);
Link(Ly,x);
Link(x,y);
}
if(op==2)
{
Link(Lx,Rx);
Link(y,x);
Link(x,Ry);
}
if(op==3)
{
if(Rx==y) Link(Lx,y),Link(x,Ry),Link(y,x);
else if(Ry==x) Link(Ly,x),Link(y,Rx),Link(x,y);
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",++kase,ans);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话