queue模板题
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.
题目描述
现有一个容器,支持两种操作:插入(操作1)和弹出(操作2),且需严格遵循先进先出(FIFO) 原则(即先插入的元素优先被弹出)。具体规则如下:
- 若执行操作1,需向容器中插入一个指定元素;
- 若执行操作2,需从容器中弹出最先插入的元素并输出该元素;
- 若执行操作2时容器为空,则输出0。
操作全部完成后,需输出容器中剩余元素的个数。
输入格式
- 第一行输入一个整数
q
(1 ≤ q ≤ 10^6
),表示操作的总次数。 - 接下来
q
行,每行表示一次操作:- 若操作类型为1,则格式为
1 x
(x
为int
范围内的整数),表示插入元素x
; - 若操作类型为2,则格式为
2
,表示执行弹出操作。
- 若操作类型为1,则格式为
输出格式
- 对于每次操作2,输出一行结果(弹出的元素或0);
- 所有操作完成后,输出一行整数,表示容器中剩余元素的个数。
样例 1 输入
5
1 2
1 4
2
1 4
2
样例 1 输出
2
4
1
样例说明
- 第1次操作(1 2):容器插入元素2,容器状态为
[2]
; - 第2次操作(1 4):容器插入元素4,容器状态为
[2, 4]
; - 第3次操作(2):弹出最先插入的元素2并输出,容器状态为
[4]
; - 第4次操作(1 4):容器插入元素4,容器状态为
[4, 4]
; - 第5次操作(2):弹出最先插入的元素4并输出,容器状态为
[4]
; - 最终剩余元素个数为1,输出1。
测试点约束
- 操作次数
q ≤ 10^6
(需注意代码效率,避免超时); - 插入元素
x
的取值范围为int
(-2^31 ~ 2^31-1)。
提示
- 该问题是典型的队列(Queue) 应用场景,队列的
push
(插入)和pop
(弹出)操作天然满足先进先出原则; - 对于大规模操作(如
q=1e6
),需使用高效的容器实现(如C++的queue
、Python的deque
),避免使用列表(List)的pop(0)
操作(时间复杂度为O(n),可能超时)。这条消息已经在编辑器中准备就绪。你想如何调整这篇文档?请随时告诉我。
7.25造数据
- Status
- Done
- Rule
- IOI
- Problem
- 13
- Start at
- 2025-7-25 18:00
- End at
- 2025-7-25 21:00
- Duration
- 3 hour(s)
- Host
- Partic.
- 9