[sicily]1934. 移动小球
来源:互联网 发布:域名和空间价格 编辑:程序博客网 时间:2024/04/29 10:27
1934. 移动小球
Constraints
Time Limit: 1 secs, Memory Limit: 32 MB
Description
你有一些小球,从左到右依次编号为1,2,3,...,n. 你可以执行两种指令(1或者2)。其中, 1 X Y表示把小球X移动到小球Y的左边, 2 X Y表示把小球X移动到小球Y右边。 指令保证合法,即X不等于Y。 例如,初始状态1,2,3,4,5,6的小球执行1 1 4后,小球1被移动到小球4的左边,即2,3,1,4,5,6。如果再执行2 3 5,结点3将会移到5的右边,即2,1,4,5,3,6。
Input
第一行为一个整数t(0<t<10),表示测试用例个数。每个测试用例的第一行为两个整数n(1<n<=500000)和m(0<m<100000),n表示小球的个数,m为指令条数,以下m行每行为一条指令。
Output
为每个测试用例单独输出一行,从左到右输出最后序列,每个数字后面跟一个空格。
Sample Input
2 6 2 1 1 4 2 3 5 5 1 2 1 5
Sample Output
2 1 4 5 3 6 2 3 4 5 1
关于线性表操作的问题。需要注意的是,根据题意很容易想到直接利用双向链表进行删除、插入,完成相关步奏,但是由于链表的存取特性,会超时。所以,采用节点数组的形式模拟双向链表。定义节点结构体,包含一个左右指针。
#include <iostream>using namespace std;struct node//定义节点,包含左右节点指针{ int left; int right;}; int main(){ int t; cin>>t; while(t--) { int n,m; cin>>n>>m; struct node a[n+1];//定义节点数组,a[i]表示编号为 i 的小球,a[i].left 为左边小球编号,a[i].right为右边小球编号 for(int i=0; i<=n; i++) { a[i].left = i-1; a[i].right = i+1; } for(int i=0; i<m; i++) { int q,x,y; cin>>q>>x>>y; //首先删除 x 节点 a[ a[x].right].left = a[x].left; // x右边节点的左指针指向x左边节点 a[ a[x].left].right = a[x].right;//x 左边节点的右指针指向x右边节点 //然后在指定位置插入 x 节点 if(q == 1) // q ==1 ,执行 插入到 y节点的左边 { a[x].left = a[y].left; a[x].right = y; //修改x 节点的左右指针 a[ a[x].left].right = x; a[y].left = x; //指向x 节点 } if(q == 2) //q == 2, 执行插入到 y 节点的右边操作 { a[x].left = y; a[x].right = a[y].right; a[a[x].right].left = x; a[y].right = x; } } int index = 0; for(int i=0; i<n; i++) { index = a[index].right; cout<<index<<" "; } cout<<endl; } //system("pause"); return 0; }
0 0
- sicily--1934. 移动小球
- sicily 1934. 移动小球
- sicily 1934. 移动小球
- Sicily 1934. 移动小球
- Sicily 1934. 移动小球
- sicily 1934. 移动小球
- [sicily]1934. 移动小球
- Sicily 1934.移动小球 | 数组模拟
- sicily 1934移动小球
- SICILY 1934 移动小球
- 链表水题一道sicily 1934.移动小球 -- 线性结构,链表,水题
- 1934. 移动小球
- 1934. 移动小球
- 1934. 移动小球
- 移动小球
- 移动小球
- 移动小球
- 移动小球
- 保护HTTP的安全
- HDU 5532 Almost Sorted Array(最长非递减子序列 模板题)——2015ACM/ICPC亚洲区长春站
- Linux下github的使用
- SD实践代码
- Objective-C编码规范:26个方面解决iOS开发问题
- [sicily]1934. 移动小球
- leetcode系列(59)Group Anagrams
- 暗通道先验的去雾算法实现
- SDWebImage异步加载图片及缓存的管理与清理 -- 推荐
- 杭电oj-1042-N!
- Ubuntu Linux Create and Add Swap File Tutorial
- IE8下HTML5标签的使用
- SDWebImage
- 对开发的一点初级感悟