春招模拟赛第九场|华为od|2023.4.13.上机编程
- Status
- Done
- Rule
- IOI
- Problem
- 3
- Start at
- 2023-4-21 19:00
- End at
- 2023-4-21 21:00
- Duration
- 2 hour(s)
- Host
- Partic.
- 49
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
曾经有一个古老的城市,里面有一位聪明的工匠,他发明了一种特殊的双端队列。这个队列可以从头部或尾部添加数据,但是只能从头部移出数据。这个特殊的队列在城市里很受欢迎,人们用它来组织不同的任务。
有一天,城市里的塔子哥要用这个队列来完成一个非常重要的任务。他需要依次执行 2×n 个指令,其中 n 个指令是向队列中添加数据(可以从头部添加,也可以从尾部添加),依次添加 1 到 n;另外 n 个指令是从头部移出数据,但是要求移出的顺序为 1 到 n 。
为了完成这个任务,塔子哥可以在任何时候调整队列中数据的顺序。但是,为了让移出数据的顺序正好是 1 到 n,他需要知道最少需要调整几次。
第一行一个整数 n ,表示数据范围。
接下来有 2×n 行,其中有 n 行为添加数据:指令 head add x
表示从头部添加数据 x , tail add x
表示从尾部添加数据 x ;
另外 n 行为移出数据指令,指令为 remove
的形式,表示移出 1 个数据;
1≤n≤3×105 。
所有的数据均合法。
注意:输入会保证按照1到n的顺序加入队列,确保输出时对应的的数据已经在队列中
一个整数,表示塔子哥要调整的最小次数。
输入
3
head add 1
remove
tail add 2
head add 3
remove
remove
输出
1
样例解释
输入命令 | 队列 |
---|---|
head add 1 | 1 |
remove | |
tail add 2 | 2 |
head add 3 | 3 2 |
remove | 2 3(调整一次) |
3 | |
remove |
上述表格展示了所给用例的执行过程。
其中,第一次remove不需要调整,可以直接满足输出要求;
第二次remove命令执行时,需要调整队列中元素的位置,将2调整到最前面才可以满足输出的要求。
这个调整可以任何时候进行,可以调移成任何顺序。
本题属于以下题库,请选择所需题库进行购买