D. set & 有序集合

    传统题 1000ms 256MiB

set & 有序集合

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

set<int>sset<int> s

常用函数

s.insert(value)value 添加到集合。

s.erase(value)value 从集合中删除。

s.count(x) 判断 x 是否在集合中,如果存在返回 11,否则返回 00

s.clear() 清空集合。

注意: 包含 #include <set>

注意: 集合中不会存在重复元素。

注意: 插入到集合中的元素会自动升序。

注意: set 基于红黑树实现,遍历比较特殊,不支持 [ ] 访问。可以用迭代器访问。

for(set<int>::iterator it = s.begin(); it != s.end(); ++ it) cout << *it << ' ';

#include <iostream>
#include <set>
using namespace std;
int main()
{
    int n;
    set<int> s;
    cin >> n;
    for(int i = 1; i <= n; ++ i)
    {
    	int op, t;
    	cin >> op;
    	if(op == 1)
    	{
    		cin >> t;
    		s.insert(t);
		}
		else if(op == 2)
		{
            cin >> t;
			s.erase(t);
		}
		else
		{
			cin >> t;
			if(s.count(t)) cout << "Yes" << endl;
			else cout << "No" << endl;
		}
	}
    return 0;
}

输入格式

11 行,为一个正整数 nn

接下来 nn 行,每行一个正整数 opop

opop11 则接着输入一个整数 tt, 并将其 s.insert(t)s.insert(t)tt 添加到集合。

opop22 则接着输入一个整数 tt, 并将其 s.erase(t)s.erase(t)tt 从集合删除。

opop33,则接着输入一个整数 tt, 若集合中存在 tt,则输出 Yes,否则输出 No

数据保证 opop22 时集合不为空。

输出格式

共一行,对于每个 33 操作,输出相应的答案。

数据范围

1n104.1 ≤ n ≤ 10^4.

1t103.1 ≤ t ≤ 10^3.

输入样例:

5
1 1
1 2
1 3
2 2
3 2

输出样例:

No

常用 STL & (最后一舞)

未参加
状态
已结束
规则
ACM/ICPC
题目
6
开始于
2024-11-7 19:00
结束于
2024-11-7 21:00
持续时间
2 小时
主持人
参赛人数
6