按照偏序(時間能夠做爲偏序)分治,不斷遞歸處理前一半元素對後一半元素的貢獻,這樣把問題轉成了一個個先插入後修改的子問題,把動態修改問題轉成靜態問題(經常在每一層處理的時候用對詢問(或修改)排序等方式消掉本來動態修改不能消掉的限制,再靜態解決)。spa
單次詢問要知足可二分性,可是\(check\)複雜的很高,並且能夠在預處理完後複雜度很低的單次判斷,從而能夠把全部詢問一塊兒二分,獲得答案。排序
\((l,r)\)表示答案(輸出結果)的範圍,\((L,R)\)表示答案在\((l,r)\)範圍內的詢問的範圍。每次二分答案,把全部\((L,R)\)中的詢問都\(check\)一遍,判斷是在左區間仍是右區間。遞歸
按照時間分治,先把操做都變成有一個存活的時間區間,而後在時間結構上區間修改,最後遍歷時間結構並修改,遍歷到葉子結點(時間點)時信息即是當時的,詢問便可。class
分治的時候先遞歸,再歸併排序,少一個\(log\),對全部操做都排序,在開始的時候記一下\(wz\),就能夠統計\(mid\)前對\(mid\)後的操做了。遍歷