Dirichlet 字首和的幾種版本

2022-05-08 04:57:10 字數 737 閱讀 6290

\[b[i] = \sum_ a[d]

\]$ n \le 2\times 10^ $

看**:

for( int i = 1 ; i <= en && pri[i] <= n ; ++ i ) 

}

為啥這麼做它是對的呢?發現每個數字會被它除以所有質因子轉移到,並且是按照質因子從小到大來的。

所以這個**相當於,對所有質因子遞迴求,然後對對所有質因子搞字首和。

形式和 埃篩 一樣,複雜度也是 $ o(n\log\log n) $

然後考慮這個

\[b[i] = \sum_ a[d]

\]看**:

for( int i = 1 ; i <= en && pri[i] <= n ; ++ i ) 

}

首先,我們發現最主要的區別在於,我們應當從 乙個數字本身 轉移到 這個數字除以所有質因子。因為是從大到小轉移的,所以也需要逆序列舉 $ j $ 。

最後考慮這個:

\[a[i] = \sum_ b[d]

\]也是已知 $ a $ 求 $ b $

這種情況其實就是第一種情況反過來,我們也可以直接把迴圈順序和轉移方法給反過來

for( int i = en ; i ; -- i ) 

}

第二種情況也可以反過來,就不贅述了。

例題:cf585e

求和 Dirichlet 字首和

題意及題解 神仙gyz,nb就完了 然後,大佬好像沒給 蒟蒻給乙份。upd 之前那個碼跑得太慢了,而且記憶體好像超限了.include include include include using namespace std const int maxn 5e7 10 inline int read ...

分層Dirichlet過程(HDP)的理解

承接這幾篇而來 由中餐館過程 crp 理解狄利克雷過程 dp 從摺棍子 stick breaking 模型到狄利克雷過程 dp 關於dirichlet過程混合模型 dpmm 的理解 先放出該構造下的圖模型 關於它的乙個直觀意義,一直看得不大明白,後續再補。圖模型表示如下 lda的圖模型如下 特別是基...

字首和演算法 一維字首和 二維字首和

輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對於每個詢問,輸出原序列中從第l個數到第r個數的和。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數,表示整數數列。接下來m行,每行包含兩個整數l和r,表示乙個詢問的區間範圍。輸出格式 共m行,每行輸出乙個詢問的結果。資...