ShinriiTin's Blog - 博主是sb

codechef Dynamic GCD

题意:给出一棵点权树,每次或者询问两点之间路径上所有点点权的gcd,或者把两点之间路径上所有点的点权同时加上一个数

考虑链上的做法,得到了链上做法之后在树上就只需要树链剖分就行了。

由更相减损术得,序列a1,a2,..,an的gcd等于序列a1,a2-a1,a3-a2,...,an-an-1的gcd。

那么对于链上我们就维护一阶差分的区间gcd,以及原数列的增量就好。

前一个信息我们用线段树维护,后一个信息我们用bit维护。

在树上的推广:用线段树维护每条重链的区间gcd,用bit维护每个点的增量。

Portal