CSUOJ 1982 小M的移动硬盘
Description
最近小M买了一个移动硬盘来储存自己电脑里不常用的文件。但是他把这些文件一股脑丢进移动硬盘后,觉得这些文件似乎没有被很好地归类,这样以后找起来岂不是会非常麻烦?
小M最终决定要把这些文件好好归类,把同一类地移动到一起。所以现在小M有了这几种操作:
1 u 表示把编号为u的文件放到最上面
2 u 表示把编号为u的文件放到最下面
3 u v 表示把编号为u的文件放到编号为v的文件的后面
已知在最开始的时候,1号文件到n号文件从上往下排布
现在小M已经给出了他所进行的所有操作,你能告诉他操作之后的序列是会变成什么样子吗?
Input
第一行为一个数字T(T<=10)表示数据组数
第二行为两个数字n、m(1<=n,m<=300000)表示序列长度和小M的操作次数
接下来m行每行两个或三个数字,具体含义见题面
保证数据合法
Output
输出一行表示小M操作结束后的序列
Sample Input
1
10 5
1 5
2 3
2 6
3 4 8
3 1 3
Sample Output
5 2 7 8 4 9 10 3 1 6
Hint
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
#define MAXN 300010
typedef long long ll;
int m, n;
int l[MAXN], r[MAXN];
void init()
{
r[0] = 1;
l[n + 1] = n;
for (int i = 1; i <= n; i++)
{
l[i] = i - 1;
r[i] = i + 1;
}
}
void con(int x, int y)
{
r[x] = y;
l[y] = x;
}
int main()
{
int T,x,u,v;
while (cin >> T)
{
while (T--)
{
cin >> n >> m;
init();
for (int i = 0; i < m; i++)
{
cin >> x;
if (x == 1)
{
cin >> u;
if (r[0] == u)
continue;
int l_u = l[u],r_u=r[u],r0=r[0];
con(l_u, r_u);
con(u, r0);
con(0, u);
}
else if (x == 2)
{
cin >> u;
if (l[n+1] == u)
continue;
int l_u = l[u], r_u = r[u], l_n = l[n+1];
con(l_u, r_u);
con(l_n, u);
con(u, n+1);
}
else
{
cin >> u >> v;
if (r[v] == u)
continue;
int l_u = l[u], r_u = r[u], r_v = r[v];
con(l_u, r_u);
con(u, r_v);
con(v, u);
}
}
int temp = r[0];
cout << temp;
while (r[temp] != (n + 1))
{
cout << " " << r[temp];
temp = r[temp];
}
cout << endl;
}
}
return 0;
}
/**********************************************************************
Problem: 1982
User: leo6033
Language: C++
Result: AC
Time:984 ms
Memory:4368 kb
**********************************************************************/
这题还能用链表来写,可以自己思考思考
CSUOJ 1982 小M的移动硬盘的更多相关文章
- csu 1982:小M的移动硬盘(双向链表)
Description 最近小M买了一个移动硬盘来储存自己电脑里不常用的文件.但是他把这些文件一股脑丢进移动硬盘后,觉得这些文件似乎没有被很好地归类,这样以后找起来岂不是会非常麻烦? 小M最终决定要把 ...
- CSU-1982 小M的移动硬盘
CSU-1982 小M的移动硬盘 Description 最近小M买了一个移动硬盘来储存自己电脑里不常用的文件.但是他把这些文件一股脑丢进移动硬盘后,觉得这些文件似乎没有被很好地归类,这样以后找起来岂 ...
- 中南大学2019年ACM寒假集训前期训练题集(基础题)
先写一部分,持续到更新完. A: 寒衣调 Description 男从戎,女守家.一夜,狼烟四起,男战死沙场.从此一道黄泉,两地离别.最后,女终于在等待中老去逝去.逝去的最后是换尽一生等到的相逢和团圆 ...
- KVM客户机使用主机USB设备
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持 -usbdevice devname 为客户机增加usb设备,devn ...
- kvm云主机使用宿主机usb设备
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持-usbdevice devname 为客户机增加usb设备,devna ...
- CSUOJ 1973 给自己出题的小X DFS
Description 小X学习了dfs,为了练习搜索,开始给自己出题玩. 玩着玩着,一会把自己难住了,一会又被自己难倒了,真是有趣诶! 小X出的题: 现在有N个不同的正整数,求它们可以组成多少个这样 ...
- mount 移动硬盘出现的各种小问题
1.fdisk -l 查看硬盘是否存在 2.新建要挂载硬盘的文件夹 mkdir /disk (如果想要挂载到已存在的目录就不要新建了) 3.挂载硬盘:mount /dev/sdc /disk 4 ...
- Mac无法写入移动硬盘
1.使用mac 磁盘工具,格式化移动硬盘 频繁穿插于mac于pc之间者,大批量拷贝大型文件者,请用exfat 首先,排除Fat32,虽然这是兼容性最好的文件格式,但一个不支持4g以上文件的格式(现在随 ...
- windows读取mac格式移动硬盘的方法
本文记录了一些window与mac数据在移动设备上互相拷贝的经验. 一.准备 家里有一台mac电脑,限于硬盘空间比较小,需要定期备份一些数据. 由于备份数据大小在20G左右,并且并没有压缩为一个压缩文 ...
随机推荐
- Bzoj4763 雪辉
Time Limit: 39 Sec Memory Limit: 666 MBSubmit: 151 Solved: 80 Description 上次立下的NOIP退役Flag没有成功 这次 ...
- 训练赛第三场A题 zoj 559
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2559 解题报告:比赛的时候的想法是可以确定至少有两对相切的圆,所 ...
- 未来人类T5 安装win10,ubuntu双系统
1.首先确保win10已经安装,u盘中已刻录好系统,下载好英伟达最新驱动保存在u盘中,压缩100g的磁盘空间给ubuntu. 2.设置双显卡模式,重启时按F7选择进入u盘启动. 3.进入安装界面,选择 ...
- Python使用OpenCV实现简单的人脸检测
文章目录: OpenCV安装 安装numpy 安装opencv OpenCV使用 OpenCV测试 效果图: 注意: 图片人脸检测 程序要求: 技术实现思路 注意 本文使用的环境是:Windows+P ...
- 从Python到Web开发
基础部分: 1-编程基础及Python环境部署 2-Python基础语法-内存管理-运算符-程序控制 3-Python内置结构-列表 4-Python数据类型之元组-字符串 5-python的封装与结 ...
- ARC073E Ball Coloring
Problem AtCoder Solution 把点映射至二维平面,问题就变成了给定 \(n\) 个点,可以把点对 \(y=x\) 对称,求覆盖所有点的最小矩形面积. 可以先把所有点放到 \(y=x ...
- C# TimeSpan获取 年月
public static string GetYearMonthDayString(this DateTime expires) { try { var now = DateTime.Now; Ti ...
- 【前端vue开发架构】vue开发单页项目架构总结
为营销活动设计的前端架构 主要的技术栈为 Vuejs,Webpack,请自行阅读如下技术或者框架的文档: 一.基础说明: node (https://nodejs.org/en/) npm (http ...
- 【小程序开发】购物车加减几件demo
<!-- 主容器 --> <view class="stepper"> <!-- 减号 --> <text class="{{m ...
- Python版飞机大战
前面学了java用java写了飞机大战这次学完python基础后写了个python版的飞机大战,有兴趣的可以看下. 父类是飞行物类是所有对象的父类,setting里面是需要加载的图片,你可以换称自己的 ...