题目
链接
题意简述
编写一个数据结构支持 种 次操作。
- 删除与 有交集的区间,插入并输出删除数。
- 查询区间数。
思路
std::set
因为区间不相交,所以以 $x$ 为第一关键字排序后是单调递增的。
很明显就是找包含这个区间前驱与后继。
$std::set$ 就行,注意细节处理,主要是 $set.end()$ 很麻烦。
不得不说 $std::pair$ 实在是很方便。
还有注意相同区间。
时间复杂度: $O(nlogn)$ 。
平衡树
也是找包含这个区间前驱与后继。
不过要手打,这里因为懒就只打了 $std::set$ 。
代码
1 |
|
杂项
- 这里用了 $std::pair$ 和 $std::set$ 实现, $std::pair$ 和 $std::set$ 大法好!
- 两个都用上了,乌拉!