http://acm.hdu.edu.cn/showproblem.php?pid=2665

以前只知道用歸并樹做,查詢時間復雜度要 m * ( log n)^3, 昨天學了一個劃分樹,查詢只要m * logn 。其實這題的正解就是使用劃分樹來做。劃分樹跟歸并樹剛好是相反的操作,劃分樹查詢用于查詢[ l , r ]內第k大的數, 歸并樹用于查詢某個數在[ l , r ]內排第幾。

劃分樹的資料比較少,可以參看 小hh 大牛的blog http://www.notonlysuccess.com/?p=142, 或者下面這個blog http://blog.163.com/tonyshaw@yeah/blog/static/142021718201035102322338/

hdu 2665