扫描法,以当前数为gcd进行扩展,找到合法的l和r。 可是这样会TLE,我们考虑如果向左延伸到相同的数,那么代表这个数能扩展的区间已经被标记过,就无需再做了。 code: const int Maxn = 2e6 + 5; int n, a[Maxn], ans = 0, anscnt = 0; set < pair <int, int> > s; signed main(void) { // file(""); read(n); for (int i = 1; i <= n; i++) read(a[i]); for (int i = 1, l, r; i &l...