移动小球

简介: 描述 你有一些小球,从左到右依次编号为1,2,3,…,n, 你可以执行两种指令。其中A X Y表示把小球X移动到小球Y左边,B X Y表示把小球X移动到小球Y右边。指令保证合法,即X不等于Y。 输入 小球个数n。

描述

你有一些小球,从左到右依次编号为1,2,3,…,n,

你可以执行两种指令。其中A X Y表示把小球X移动到小球Y左边,B X Y表示把小球X移动到小球Y右边。指令保证合法,即X不等于Y。

输入 小球个数n。指令条数m和m条指令,注意,1≤n≤500000,0≤m≤100000。

输出 从左到右输出最后的小球序列。

样例输入

6 2
A 1 4
B 3 5

样例输出

2 1 4 5 3 6

 

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 int m,n;//n个小球,m条指令 
 6 
 7 int main()
 8 {
 9     int i,j,k;
10     char ch;//指令格式 
11     int a,b;
12     int left[1000],right[1000];
13     
14     while(cin>>n>>m) 
15     {
16         if(1==n)
17         {
18             cout<<1<<endl;
19             continue;
20         }
21         for(i=0; i<n; i++)
22             left[i+1] = i;
23         left[n+1] = n;
24         for(i=0; i<n; i++)
25             right[i] = i+1;
26         
27         while(m--)
28         {
29             getchar();//吸收换行 
30             cin>>ch>>a>>b;
31             right[left[a]]=right[a];//删除a 
32             left[right[a]]=left[a];
33             if(ch=='A')//a         移到b左边 
34             {
35                 left[a] = left[b];
36                 right[a] = b;
37                 right[left[b]] = a;
38                 left[b] = a;
39             }
40             if(ch=='B')
41             {
42                 left[a] = b;
43                 right[a] = right[b];
44                 right[b] = a;
45                 left[right[b]] = a;
46             }
47         }
48         //注意输出不可直接输出right[i] 
49         int temp = right[0];   
50         cout<<temp;
51         for(i=1; i<n; i++)
52         {
53             temp = right[temp];
54             cout<<" "<<temp;
55         }
56         cout<<endl;
57          
58     }
59     return 0;
60 }

 

目录
相关文章
|
4月前
|
前端开发
HTML+CSS实现弹跳球效果
HTML+CSS实现弹跳球效果
|
6月前
|
算法 图形学
矩形范围碰撞检测
矩形范围碰撞检测
|
10月前
求小球下落弹起的高度与路程
求小球下落弹起的高度与路程
72 0
|
前端开发 JavaScript
使用html+css+JavaScript制作抛物线小球
使用html+css+JavaScript制作抛物线小球
86 0
杭电OJ变形 骨牌铺满方格 2501
杭电OJ变形 骨牌铺满方格 2501
69 0
杭电OJ 2501 骨牌铺满方格 递推
杭电OJ 2501 骨牌铺满方格 递推
60 0
|
C++
201803-2 碰撞的小球
201803-2 碰撞的小球
59 0
201803-2 碰撞的小球
|
前端开发 JavaScript
【横柱带斜三角】进度条实现
手写个进度条,说下自己遇到的问题,第一次的思路是只通过before和after样式写出来,实现进度条,但是发现有个bug就是当达到90多以上,after右上三角颜色就不对了,颜色有出入,无法实现,接下来就想到了第二种方案,在mybar里边分别放两个div 一个渐变的横柱和一个小三角这样,然后依旧通过mybar去控制进度就这样完美解决,具体思路看代码就了解了,看代码吧
134 0