codeforces 1098E Fedya the Potter

这题思路很清楚。
应该就是先把b数组搞出来,然后再根据b算c数组的中位数。
首先先把b搞出来,如果用倍增,那么预处理\(O(n log n log C)\),算出b复杂度为\(O(n log n log C log C)\),稍微用一下gcd的trick就可以变成预处理\(O(n (log n+log C))\) ,算b复杂度\(O(n log n log C)\)
如果用线段树加trick维护 预处理\(O(n log C)\),算b在树上二分也是\(O(n log n log C)\)的。

然而我用了裸的线段树,所以是三个log的。

猜你喜欢

转载自www.cnblogs.com/Yuhuger/p/10457341.html