1 条题解
-
1
不会正解,所以写了个根号做法。
先考虑 怎么做。
我们考虑贪心,从小到大扫描线,遇上左边界就插入有边界的小根堆,遇上需求就弹出对应个数的堆顶元素,遇上右边界就弹出堆顶元素(如果存在的话)。
当某个需求无法解决时直接无解,否则必然有解。
考虑 的情况。
我们考虑求出覆盖一段区间的需求的人的数目是多少。这样每次本质不同的人只有 种。
直接主席树是 的,不优。
考虑根号平衡,我们把人按左端点排序,每 个分一块,每个块内的人再按右端点逆序排序。记录每个位置对应多少个前 个块内的人,查询时再额外统计散块的贡献。
这样我们就知道每段需求区间被多少个人完全覆盖,进一步通过容斥得到恰好覆盖。
这样就把人划分成了 种。
然后暴力模拟前面的贪心,容易做到 。
总复杂度 ,空间 。
平衡复杂度时块长取 实际跑得很快。
参考代码。
- 1
信息
- ID
- 4369
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 15
- 已通过
- 4
- 上传者