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