洛谷集合题单

qbning / 2023-08-21 / 原文

发现自己的基础代码能力还有待提高

【数据结构1-3】集合 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


P5250 【深基17.例5】木材仓库 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

学习set的使用

搬个知乎的STL教程(九):C++ STL常用容器之 set/multiset - 知乎 (zhihu.com)

1set/multiset构造函数

查看代码
 set<T> st;//set默认构造函数: 
mulitset<T> mst; //multiset默认构造函数: 
set(const set &st);//拷贝构造函数

2set赋值操作

查看代码
 set& operator=(const set &st);//重载等号操作符 
swap(st);//交换两个集合容器

3set大小操作

查看代码
 size();//返回容器中元素的数目 
empty();//判断容器是否为空

4set插入和删除操作

查看代码
 insert(elem);//在容器中插入元素。 
clear();//清除所有元素 erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。 
erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。 
erase(elem);//删除容器中值为elem的元素。

 

4.5set查找操作

查看代码
 find(key);//查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end(); 
count(key);//查找键key的元素个数 
lower_bound(keyElem);//返回第一个key>=keyElem元素的迭代器。 
upper_bound(keyElem);//返回第一个key>keyElem元素的迭代器。 
equal_range(keyElem);//返回容器中key与keyElem相等的上下限的两个迭代器

P5266 【深基17.例6】学籍管理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

这个对我来说是学习了map或者说stl的earse(val)


P2814 家谱 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

很简单的字符串并查集


 P1525 [NOIP2010 提高组] 关押罪犯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

这个的并查集思路重点是设置一个敌人数组,表示这两个罪犯不能放在一个集合,那么与a不能放在一个集合的元素都可以互相合并


P1621 集合 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

这个我用欧拉筛结果MLE,看题解用埃筛就可以了,晒到一个大于p的质数就在标记合数的时候把他们合并起来即可。