【CODECHEF】Children Trips(分块)
【CODECHEF】Children Trips(分块)
主要的操作是:每一天走到最远能够走到的休息区
确实一开始没有想到是分块,只是觉得1<=d<=21<=d<=2有点东西,但是没有搞出来。
其实也可以说是分类讨论。
首先肯定都是求出lcalca,两点都向lcalca跳。
1.P>sqrt(n)1.P>sqrt(n)
这样的P有一个特点,就是他每天至少是要走sqrt(n)公里的,直接暴力跳O(nsqrt(n))O(nsqrt(n)),可以写个jump()jump ()直接跳即可
2.P<=sqrt(n)2.P<=sqrt(n)
这样的P也有一个特点,至多是sqrt(n)sqrt(n)种,排序后,关于每一种做一个倍增的数组,用倍增跳即可。

在最后做一个收尾的处理即可。(看一下两点到lcalca的距离之和是否大于P)

相关文章: