线段树浅层学习

AcWing 246. 区间最大公约数

  • 题意简述:区间加,区间 gcd.

  • 解:
    根据更相减损术,有 \(\gcd(x,y)=\gcd(x,y-x)\).
    一般地,有 \(\mathbf{\gcd(a_1,a_2,\cdots,a_n)=\gcd(a_1,a_2-a_1,\cdots,a_n-a_{n-1})}\).
    这个结论是关于 gcd 的一个重要结论(另一个重要结论是 \(\gcd(f_n,f_m)=f_{\gcd(n,m)}\),其中 \(f\) 为斐波那契数列)。
    有了这个结论,我们就可以使用线段树维护关于 \(a\) 数组的差分数组 \(b_i=a_i-a_{i-1}(a_0=0)\) 的和与 gcd.
    单点修改,区间查询。时间复杂度 \(O(m\log n)\).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章