1. 程式人生 > 其它 >【LG P2801】教主的魔法

【LG P2801】教主的魔法

題意

區間加,查詢區間大於等於 \(k\) 的數的個數。

解析

這是一道資料結構題。

區間查詢

這裡貢獻仍然獨立。

考慮在每個塊內維護有序序列,這樣只需要一次二分即可計算塊內貢獻。

對於散塊,暴力遍歷即可。

若塊大小為 \(B\),則複雜度為 \(O(\dfrac{n}{B}\log B+B)\)

區間加

對於整塊,塊內的相對順序不變,只需記錄加法標記。注意考慮加法標記對二分比較的影響。

對於散塊,需要重構有序序列,若加完後暴力排序,複雜度是 \(O(B\log B)\)

在舊的有序序列中提取加和未被加的兩部分,各是有序序列,歸併即可做到 \(O(B)\)

複雜度 \(O(\dfrac{n}{B}+B)\)


\(B=\sqrt{n\log n}\) 得到最優複雜度 \(O(q\sqrt{n\log n})\)

總結

複雜度分析技巧 : 分塊的主要思想是平衡,若複雜度由兩部分組成,直接令兩者相等,即可解得最優塊大小。

(本題資料非常弱,錯誤做法可能可以通過)

本文作者:AFewMoon,文章地址:https://www.cnblogs.com/AFewMoon/p/15434927.html

本作品採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。

限於本人水平,如果文章有表述不當之處,還請不吝賜教。