Type: Default 1000ms 256MiB

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。

操作全部完成后,需输出容器中剩余元素的个数。

输入格式

  • 第一行输入一个整数q1 ≤ q ≤ 10^6),表示操作的总次数。
  • 接下来q行,每行表示一次操作:
    • 若操作类型为1,则格式为 1 xxint范围内的整数),表示插入元素x
    • 若操作类型为2,则格式为 2,表示执行弹出操作。

输出格式

  • 对于每次操作2,输出一行结果(弹出的元素或0);
  • 所有操作完成后,输出一行整数,表示容器中剩余元素的个数。

样例 1 输入

5
1 2
1 4
2
1 4
2

样例 1 输出

2
4
1

样例说明

  1. 第1次操作(1 2):容器插入元素2,容器状态为 [2]
  2. 第2次操作(1 4):容器插入元素4,容器状态为 [2, 4]
  3. 第3次操作(2):弹出最先插入的元素2并输出,容器状态为 [4]
  4. 第4次操作(1 4):容器插入元素4,容器状态为 [4, 4]
  5. 第5次操作(2):弹出最先插入的元素4并输出,容器状态为 [4]
  6. 最终剩余元素个数为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),可能超时)。这条消息已经在编辑器中准备就绪。你想如何调整这篇文档?请随时告诉我。

竞赛3班7.26日习题课

Not Attended
Status
Done
Rule
IOI
Problem
13
Start at
2025-7-26 14:00
End at
2025-7-26 20:00
Duration
6 hour(s)
Host
Partic.
9