整理书本(book)-T2

题目描述

又一个学期结束了, 又积累了好多本书, 你决定好好整理一下,整理时共有三种操作, 规则如下:

1 p 表示把编号为 p 的书放到最前面

2 p 表示把编号为 p 的书放到最后面

3 p q 表示把编号为 p 的书放到编号为 q 的书的后面

1、2、3 分别代表整理操作的种类, p、q 表示书的编号,他们之间由空格分隔;

已知在整理之前,所有书从 1 开始依次编号排放。

输入格式

共 m+1 行。

第一行有两个由空格分隔的正整数 n 和 m, 分别表示 n 本书和 m 次整理操作。

接下来 m 行, 每行有 2 个或 3 个由空格分隔的正整数, 对应上述三种整理操作。

输出格式

共 1 行,经过整理后的书本顺序,书本间用空格隔开。

输入输出样例

输入样例1:
复制代码
10 4 
1 3 
2 4 
3 3 6 
3 1 5
输出样例1:
复制代码
2 5 1 6 3 7 8 9 10 4

说明

数据范围: 1 ≤ n,m ≤ 100000

【耗时限制】1000ms 【内存限制】128MB

-------------------------------------------------------分割线-------------------------------------------------------------

满分AC代码

cpp 复制代码
#include<iostream>
#include<map>
#include<algorithm>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<cstdio>
#include<string>
#include<cstring>
#include<sstream>
#include<set>
using namespace std;
long long l[100010],r[100010];
inline void Link(int L,int R){
	r[L]=R;
	l[R]=L;
}
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		l[i]=i-1;
		r[i]=(i+1)%(n+1);
	}
	l[0]=n;
	r[0]=1;
	int c,x,y;
	int head=1,tail=n;
	int lx,rx,ly,ry;
	for(int i=1;i<=m;i++){
		cin>>c;
		if(c==1){
			cin>>x;
			head=r[0];
			if(x==head) continue;
			lx=l[x],rx=r[x];
			Link(lx,rx);
			l[head]=x;
			r[x]=head;
			l[x]=0;
			r[0]=x;
		}
		if(c==2){
			cin>>x;
			tail=l[0];
			if(x==tail) continue;
			if(n<=1) continue;
			lx=l[x],rx=r[x];
			Link(lx,rx);
			r[tail]=x;
			l[x]=tail;
			r[x]=0;
			l[0]=x;
		}
		if(c==3){
			cin>>x>>y;
			if(x==y) continue;
			if(n<=1) continue;
			if(r[y]==x) continue;
			lx=l[x],rx=r[x];
			ly=l[y],ry=r[y];
			Link(lx,rx);
			Link(x,ry);
			Link(y,x);
		}
	}
	int b=r[0];
	for(int i=1;i<=n;i++){
		cout<<b<<" ";
		b=r[b];
	}
    return 0;
}
相关推荐
AI_Keymaker26 分钟前
一句话生成3D世界:腾讯开源混元3D模型
算法
Leon_vibs29 分钟前
当 think 遇上 tool:深入解析 Agent 的规划之道
算法
旧时光巷36 分钟前
【机器学习-2】 | 决策树算法基础/信息熵
算法·决策树·机器学习·id3算法·信息熵·c4.5算法
落了一地秋1 小时前
4.5 优化器中常见的梯度下降算法
人工智能·算法·机器学习
前端伪大叔1 小时前
第 5 篇:策略参数怎么调优?Freqtrade hyperopt 快速入门
算法·代码规范
Code季风1 小时前
深入理解令牌桶算法:实现分布式系统高效限流的秘籍
java·算法·微服务
KyollBM2 小时前
【Luogu】每日一题——Day15. P1144 最短路计数 (记忆化搜索 + 图论 + 最短路)
算法·图论
一百天成为python专家2 小时前
K-近邻算法
数据结构·python·算法·pandas·近邻算法·ipython·python3.11
满分观察网友z2 小时前
告别烦人的“三连发”:我的智能评论系统过滤之旅(1957. 删除字符使字符串变好)
算法
满分观察网友z2 小时前
滑动窗口下的极限挑战:我在实时数据流中挖掘最大价值分(1695. 删除子数组的最大得分)
算法