CF1493D GCD of an Array

a的范围不一般,不是通常的10^9,而是10^5.

GCD的话,可以用质数指标来表示,那么无非就是区间内找min。

10^5内质数最多有Sqrt(10^5)+1个,大概317个。(这应该是对一个ai进行的分解有这么多吧,那么n个ai,有可能多出来的一个不相同,总数可能有O(N)级别?)

那么对每个质数都开一个数组,表示ai在这个质数上的指标。

每次更新317次后,再对317个数组取最小值。

数组中取最小值,完全可以用堆+标记,或者用multiset做。

那么O(NlogN*317),还是有点大。

注意x很小,因此每个更新最多影响317个数组。

posted @ 2021-03-11 09:47  AngelKnows  阅读(56)  评论(0)    收藏  举报