在线静态区间 gcd
若使用辗转相除,则显然有一个
建区间分治的结构。对于跨过中点的询问,先求出左区间后缀和右区间前缀的
这无法解决
考虑消除掉上面的
前者实际上可以直接扫描线扫左端点和右端点,对每个左端点和右端点把分段存下来。后者可以直接压位。
时间复杂度
-
q\le n
块长为
时间复杂度
当然,允许离线的话,存在更加简单的做法。不过有一个遗留问题:可以发现 part1 的分治结构需要耗费
若使用辗转相除,则显然有一个
建区间分治的结构。对于跨过中点的询问,先求出左区间后缀和右区间前缀的
这无法解决
考虑消除掉上面的
前者实际上可以直接扫描线扫左端点和右端点,对每个左端点和右端点把分段存下来。后者可以直接压位。
时间复杂度
块长为
时间复杂度
当然,允许离线的话,存在更加简单的做法。不过有一个遗留问题:可以发现 part1 的分治结构需要耗费