維護區間資訊(線上)
暴力做法,\(O(n)\)修改,\(O(n)\)查詢。
但我們會發現多次詢問會重複查詢一些點,所以我們可以記錄下一些區間的資訊,
查詢時就可以節約時間。
但我們記錄的區間必須滿足一些優秀性質:
靈活性:記錄下的區間組合靈活性高,即查詢區間可以儘可能被記錄下來的區間記錄下來。
高效性:記錄下的區間需要能夠在合理的時間複雜度類維護,且數量少。
線段樹
利用平衡滿二叉樹。
優點:
靈活性極高,因為任意一個區間都分割為log個線段樹中的節點對應的區間。
高效性,可以\(O(logn)\)的時間查詢區間。
缺點:
但維護這些區間需要合併更小的區間,但區間的合併有時會很困難。
且區間修改的維護需用lazy標記,lazy標記的疊加有時會很困難。
分塊
優點:
靈活性一般,因為任意一個區間都分割為\(\le\sqrt n\)個記錄區間和\(\le \sqrt n\)個散點。
維護區間較為容易,因為大部分時候維護區間和散點較為暴力。
缺點:
高效性差,需要\(O(\sqrt n)\)的時間查詢區間,這使得分塊的題有時需要各種卡常。