codeforces 1098E Fedya the Potter(倍增+类欧几里得+二分答案)
题目链接
3400名副其实
题解:
首先考虑b数组,注意到ai<=100000a_i<=100000ai<=100000则最大公约数不会超过100000100000100000
于是可以开一个cnt数组记录b数组中每个数出现的个数
现在考虑如何在复杂度内计算cnt
对于每个起始位置,之后连续区间的gcd只会是他的因数,因数的因数……最多log次就会变成1
对于每段延伸的区间的长度,我们可以用倍增去跳
于是计算cnt的复杂度为O(nlogn2)O(nlogn^2)O(nlogn2)
可喜可
原创
2020-08-19 22:53:27 ·
159 阅读 ·
0 评论