AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P2490. 特异性双端队列

简单通过率 55% · 提交 549 · 通过 302
模拟贪心队列数学

小慕有一个特殊的,这个队列既可以从头部添加数据,也可以从尾部添加数据,但只能从头部移除数据。 小慕依次执行 2n 个指令,往队列中添加数据和移除数据。其中 n 个指令是添加数据(可能从头部添加,也可能从尾部添加),依次添加 1 到 n;另外 n 个指令是移除数据。 现在要求移除数据的顺序为 1 到 n。 为了满足最终输出的要求,小慕可以在任何时候。 请问小慕最少需要调整几次,才能使得移除数据的顺序正好是 1 到 n。

提示:带虚线的词点一下有通俗解释。

输出描述

第一行一个数据n,表示数据的范围。 接下来的2n行,其中有n行为添加数据,指令为: - head add x表示从头部添加数据 x, - tail add x 表示从尾部添加数据 x, 另外 n 行为移出数据指令,指令为:remove 的形式,表示移出1个数据; 1 ≤ n ≤ 3 * 10^5。 所有的数据均合法。

示例

示例 1

输入

5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove

输出

1

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
双端队列操作示例(n=5) 队列(只能从头部移除) 头部 尾部 操作序列: head add 1 | tail add 2 | remove | head add 3 | tail add 4 | head add 5 | remove | remove | remove | remove 关键点: 移除1后队列状态 [3,2,4,5](头部→尾部) 调整一次后 [2,3,4,5](头部→尾部) 后续移除 2,3,4,5 顺利 最少调整次数:1 当队列头部不是期望的移除值时,需要调整顺序
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「特异性双端队列」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。