給定n個整數的無序陣列,我知道我可以找到在O(N LG N)以下這種方法,使用比特反轉的總數:Count Inversion by BIT 然而,如果我必須查詢O(lg N)中總反轉次數的任意範圍,有可能嗎? O(N lg N)預先計算是可以接受的。 我已經做了一些研究,似乎N因素是不可避免的... 任何建議,將不勝感激!
問題出在codechef中的travtree問題。在editorial,他們建議通過記錄每個節點在DFS遍歷中的發現和退出時間,將樹線性化到數組。現在我們可以快速回答有關sum subtree的查詢 - 通過對該節點的[discovery time, exit time]段中發生的事件進行求和。 (我們使用Fenwick樹來快速回答這些查詢)。 然而,要解決這個問題,我們還需要快速回答sum pa