維護區間資訊

peng1984729發表於2024-08-23

維護區間資訊(線上)

暴力做法,\(O(n)\)修改,\(O(n)\)查詢。

但我們會發現多次詢問會重複查詢一些點,所以我們可以記錄下一些區間的資訊,

查詢時就可以節約時間。

但我們記錄的區間必須滿足一些優秀性質:

靈活性:記錄下的區間組合靈活性高,即查詢區間可以儘可能被記錄下來的區間記錄下來。

高效性:記錄下的區間需要能夠在合理的時間複雜度類維護,且數量少。

線段樹

利用平衡滿二叉樹。

優點:

靈活性極高,因為任意一個區間都分割為log個線段樹中的節點對應的區間。

高效性,可以\(O(logn)\)的時間查詢區間。

缺點:

但維護這些區間需要合併更小的區間,但區間的合併有時會很困難。

且區間修改的維護需用lazy標記,lazy標記的疊加有時會很困難。

分塊

優點:

靈活性一般,因為任意一個區間都分割為\(\le\sqrt n\)個記錄區間和\(\le \sqrt n\)個散點。

維護區間較為容易,因為大部分時候維護區間和散點較為暴力。

缺點:

高效性差,需要\(O(\sqrt n)\)的時間查詢區間,這使得分塊的題有時需要各種卡常。

相關文章