[POJ 2104]

K-th Number

划分树。

题意是,给一个长度为n的数组,之后有m次询问,每次询问为三元组(l,r,k),问数组中第l到第r个元素间第k小的元素是什么。

又是一题很有意思的题目,常规解法的时间复杂度在这里是完全不可行的,必须预先建树后才能O(lgN)地回答每次询问。但看了划分树的建树思想后还是推了很久。

划分树是基于线段树的,其基本思想在于父节点上[L,R]区间上[l,r]中的第k小元素,如何O(1)时间地递推到左子树或右子树中,这样总共O(lgN)次后便能得到答案。