更好的阅读体验:我的博客园
更新日志
2025/8/29 修改了正确性证明,使其更加直观。
题目传送门
题目大意
有一条数轴,上面有一些树,坐标为 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an 。现在给你 k k k 个限制,对于第 i i i 个限制,要求 [ l i , r i ] [l_i,r_i] [li,ri] 上必须至少有 t i t_i ti 颗树。
部分分思路
首先排序 a a a,然后将限制按左端点排序。显然对于第 i i i 个限制,保留右边的 t i t_i ti 颗树是最不劣的 直观理解无需证明。
那么,我们遍历这个限制列表,然后从右端点开始添加树。时间复杂度 O(NK) \text{O(NK)} O(NK)。
伪代码实现:
#include <bits/stdc++.h>
using namespace std;
#define all(x
USACO24DEC: Deforestation S算法解析

最低0.47元/天 解锁文章
361

被折叠的 条评论
为什么被折叠?



