P1501 [国家集训队]Tree II(根号分治/CDQ分治)
考虑根号分治。
首先对于 (k<sqrt{n}) 的,我们直接每次暴力 (O(n)) dp 即可。
然后对于 (sqrt{n} leq k) 的,我们发现答案的种类只有 (sqrt{n}) 级别,而且答案显然具有单调性,所以我们考虑对于每一个点二分其最右边的和它答案相同的点。
这样做是 (O(nlognsqrt{n})) 的,调整块长,变成 (O(nsqrt{nlogn})) 。
同时也可以 (cdq) 分治,因为答案具有单调性,而这样做的时间复杂度似乎是 (O(nlognsqrt{n})) 的。