線段樹淺層學習

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)\).

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