Type: Default 1000ms 256MiB

set模板题

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.

题目描述

现有一个集合(Set)容器,支持以下操作:插入元素、删除元素、查询元素存在性和统计元素数量。你需要实现这个集合,并处理可能的边界情况。具体规则如下:

  1. 插入操作:向集合中插入一个元素。若元素已存在,则操作无效。
  2. 删除操作:从集合中删除指定元素。若元素不存在,则操作无效。
  3. 查询操作:检查集合中是否存在指定元素。
  4. 统计操作:返回集合中元素的数量。

操作完成后,需输出最终集合的元素个数及所有元素(按升序排列)。

输入格式

  • 第一行输入一个整数q1 ≤ q ≤ 1000000),表示操作的总次数。
  • 接下来q行,每行表示一次操作,格式如下:
    • 插入操作1 x(插入元素x)。
    • 删除操作2 x(删除元素x)。
    • 查询操作3 x(查询元素x是否存在)。
    • 统计操作4(返回当前集合元素个数)。

输出格式

  • 对于每次查询操作(操作3),输出一行:
    • 若元素存在,输出YES
    • 若元素不存在,输出NO
  • 对于每次统计操作(操作4),输出一行整数,表示当前集合的元素个数。
  • 所有操作完成后,输出两行:
    • 第一行:一个整数,表示集合的元素个数。
    • 第二行:集合的所有元素,按升序排列,元素之间用空格分隔。若集合为空,输出空行。

样例 1 输入

5
1 10
1 20
3 20
2 10
3 10

样例 1 输出

YES
NO
1
20

样例说明

  1. 插入操作:依次插入10和20,集合变为{10, 20}
  2. 查询操作:查询20,存在,输出YES
  3. 删除操作:删除10,集合变为{20}
  4. 查询操作:查询10,不存在,输出NO
  5. 最终输出:集合元素个数为1,元素为20。

测试点约束

  • 操作次数 q ≤ 1000000
  • 元素值x的取值范围为int(-2^31 ~ 2^31-1)。

提示

  • 唯一性:集合中不允许存在重复元素。
  • 有序性:输出元素时需按升序排列。
  • 高效实现:插入、删除和查询操作的时间复杂度应为O(log 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