題意
給定 \(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)\)