一行盒子,数组表示链表
来源:互联网 发布:mac软件删除不彻底 编辑:程序博客网 时间:2024/05/16 06:33
#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 100010long 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;}
0 0
- 一行盒子,数组表示链表
- 1329: 一行盒子+csuoj+数组模拟链表
- CSUOJ 1329 一行盒子(数组模拟链表)
- csu 1329 一行盒子(数组模拟链表)
- CSUOJ 1329 一行盒子 数组模拟链表 附LIST解法
- TOJ 4596 一行盒子 -- 双向链表
- CSU1329 一行盒子(模拟链表)
- csu 1329 一行盒子(双向链表模拟)
- CSU 1329: 一行盒子(双向链表)经典 13年省赛题
- 湖南程序设计真题 一行盒子 (链表模拟)
- CSU 1329 一行盒子(模拟链表)
- CSU 1329~一行盒子(模拟链表)
- CSU OJ:1329 一行盒子(模拟链表)
- 一行盒子
- CSU 1329 一行盒子
- csu 1329 一行盒子
- toj 4596 一行盒子
- 1662: 一行盒子
- 大众点评电话面试
- freemarker学习笔记(二)
- 目标检测中背景建模方法
- HashSet、TreeSet及泛型
- 解决 windows 8.1 无线网络 连接受限
- 一行盒子,数组表示链表
- 汉诺塔递归结构
- 第五天工作总结
- Rotate Array
- 杭电第5162题----jump jump
- PRKP-1001,CRS-0215 rac 集群无法启动数据库和实例
- cocos2dx菜单重叠按钮实现按层优先选择及透明过滤
- 非递归遍历二叉树
- (蓝桥杯题)基础练习 矩形面积交