P1501 [国家集训队]Tree II

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})) 的。

原文地址:https://www.cnblogs.com/Akmaey/p/14667332.html