NOIP模拟赛 高级打字机

【题目描述】

早苗入手了最新的高级打字机。最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧。

请为这种高级打字机设计一个程序,支持如下3种操作:

1.T x:在文章末尾打下一个小写字母x。(type操作)

2.U x:撤销最后的x次修改操作。(Undo操作)

(注意Query操作并不算修改操作)

3.Q x:询问当前文章中第x个字母并输出。(Query操作)

文章一开始可以视为空串。

【输入格式】

第1行:一个整数n,表示操作数量。

以下n行,每行一个命令。保证输入的命令合法。

【输出格式】

每行输出一个字母,表示Query操作的答案。

【样例输入】

7

T a

T b

T c

Q 2

U 2

T c

Q 2

【样例输出】

b

c

【数据范围】

对于40%的数据 n<=200;

对于100%的数据 n<=100000;保证Undo操作不会撤销Undo操作。

<高级挑战>

对于200%的数据 n<=100000;Undo操作可以撤销Undo操作。

<IOI挑战>

必须使用在线算法完成该题。

纯模拟题,蒟蒻先搞出前100%

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int n,cnt=0;
 5 char S[100001];
 6 
 7 int main()
 8 {
 9     cin>>n;
10     for(int i=1;i<=n;i++)
11     {
12         char t,x;
13         int m;
14         cin>>t;
15         switch(t)
16         {
17         case 'T':
18             cin>>x;
19             S[++cnt]=x;
20             break;
21         case 'U':
22             cin>>m;
23             cnt-=m;
24             break;
25         case 'Q':
26             cin>>m;
27             cout<<S[m]<<endl;
28             break;
29         }
30     }
31     return 0;
32 }
原文地址:https://www.cnblogs.com/InWILL/p/5971115.html