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)\)

posted @ 2024-03-15 14:45  cxqghzj  阅读(4)  评论(0编辑  收藏  举报