set/multiset/map/multimap
-优点:支持跟排序有关的操作
set/multiset
erase();
- 输入一个数x,删除所有等于x的结点 O(k+logn), 其中k是x的个数
- 输入一个迭代器,删除这个迭代器
-核心操作
lower_bound(x)/upper_bound(x);返回大于等于/大于x的最小的数的迭代器,不存在返回end
map/multimap, 两个东西映射
-用途:map实现平衡树
insert(); //插入的数是一个pair
erase(); //输入的数是pair或迭代器
find();
[] //跟数组用法相同, 但时间复杂度O(logn)
map<string, int> a;
a["xue"]=1;
cout<<a["xue"]<<endl;
lower_bound(x)/upper_bound(x);
unordered_set/unordered_map/unordered_multiset/unordered_multimap //哈希表
-优点:
和前面类似,但增删改查操作时间复杂度O(1)
-缺点:
内部无序,不支持lower_bound(x)/upper_bound(x); 不支持++ --操作
bitset, 压位
-优点:节约8倍空间
-定义
bitset<10000> s; //<个数>
-操作
~, &, |, ^, >>, <<, ==, !=
[]
count(); //返回有多少个1
any(); //判断是否至少有一个1
none(); //判断是否全为0
set(); //把所有位置成1
set(k, v); //把第k位变成1
reset(); //把所有位变成0
flip(); //等价于 ~
flip(k); //把第k位取反
1.10小结
-
《算法基础课》
-
组队练习
牛客小白月赛31
D-数据范围,没开long long
G-计算问题
H-√
I - √