LY1168 [ 20230325 CQYC省选模拟赛 T3 ] 游戏
题意
给定 \(n\) 个区间 \(l_i, r_i, k_i\)。
\(k_i\) 表示解锁当前点当且仅当 \(l_i \to r_i\) 的区间内至少有 \(k_i\) 个点被解锁。
问一共能解锁多少点。
Sol
直接暴力跑是 \(n ^ 2\) 的。
不难想到优化建图,复杂度:\(O(nk \log)\)
这样明显是过不去的。
集中注意力。
注意到操作一次最多让一个区间被解锁。
换句话说,假设当前操作次数为 \(x\),那么只有当 \(k_i \le x\) 的区间,才会有可能被解锁。
所以接下来的事情就很简单啦,考虑定期重构线段树。
每次将 \(k_i \le B\) 的区间加入线段树。
暴力对于每一个点操作即可。
注意在重构时要先清空队列保证复杂度。
复杂度:\(O(n \sqrt n \log n)\)