lg-math4

haozexu發表於2024-08-15

lg-math4


【!REPLAY!】


  • 字首和最佳化 \(f=g*1\)

可看作 \(n\) 個質因數,做高維字首和

這個例項讓我們知道實際上高維字首和不一定只適用於 0/1

  • 高維差分最佳化 \(f=g*\mu\)

由於 \(\mu*1=\epsilon\)

  • 例子

Trick1:用莫比烏斯反演就是將 \(f=g*1\)

此時我們可以令 \(f=g*1\) 就可以把函式的複合放到外面。

然後考慮反演 \(f*\mu=g\)

  • 例子2

\[\sum_{i=1}^{n}\sum_{j=1}^n\operatorname{lcm}(i,j) \]

\(n\le 10^7\)

Trick2:經典拆 lcm、經典列舉 gcd、經典列舉因數、經典調換求和順序(艾弗森法則)

Trick3\([n=1]=\sum_{d|n}\mu(d)\)

注意整除分塊套整除分塊的複雜度為 \(\mathcal O(n)\)


同時也可以用上面例子1的方法令 \(F=\frac{1}n,F=g*1\)

\(g\) 替換後可得:

\[\sum_d g(d)sum(\lfloor n/d\rfloor,\lfloor n/d\rfloor) \]

要快速求出 \(\sum_d g(d)\) 可利用線性篩 \(F*\mu=g\)

可以先乘上 \(n\) 然後化為一個簡單的形式,然後可得出線性篩的做法。

  • 例子3

唯一的不同就是 lcm 裡面換掉了,可以考慮轉化問題,不要列舉下標,而是列舉值,乘上出現次數。

  • 例子4

Trick4:輾轉相除轉化過大 gcd

【!REPLAY!】 篩討論

  • 例子5

Trick5: 偏序關係難處理,化為等於關係,進行遞推

\(G(n)=\sum_{i}^{n}\sum_{j}^{n}[\gcd(i,j)+\operatorname{lcm}(i,j)=n]\)

這裡採用列舉 gcd 的方法。

那麼後面這個式子有組合意義。可以篩出質因子數目。

Trick6: 提取公約數儘量去掉限制,注意艾弗森約定的組合意義。

  • 基本和組

\(D(x)=\{\lfloor x/1\rfloor,\lfloor x/2\rfloor,\dots,\lfloor x/x\rfloor\}\)

透過分類討論 \(\sqrt x\) 得到 \(\mathcal O(|D(x)|)=\mathcal O(\sqrt x)\)

定理 \(D(\lfloor x/a\rfloor)\subset D(x)\)

那麼,計算一個卷積,如果可以知道其中一個函式的字首和,則可以 \(\sqrt n\) 地求出卷積。不過,我們必須求字首和。

  • 杜教篩

現在要求 \(f\) 的字首和

我們要找到 \(h=f*g\) ,構造出 \(h,g\) ,必須能 \(\mathcal O(1)\) 求字首和。

\[\begin{aligned} H_n=&\sum_{i=1}^n h_i\\ =&\sum_{i=1}^n\sum_{j|i}f_ig_{\lfloor i/j\rfloor}\\ =&\sum_{ab\le n}f_ag_b\\ =&\sum_{b}g_b\sum_{a\le \lfloor n/b\rfloor} f_a\\ =&\sum_{i}g_i F_{\lfloor n/i\rfloor}\\ =&g_1F_n+\sum_{i=2}^ng_iF_{\lfloor n/i\rfloor} \end{aligned} \]

即得杜教篩公式。

我們設定一個閾值 \(B=n^{2/3}\) ,小於的時候線性篩,大於的時候杜教篩。

  • 神秘 Trick

下面還有兩個神秘拆分

要證明只要證明在質數冪上是一樣的就可以了

  • Powerful Number 篩

注:因為對於所有正整數,都可以寫成 \(2k+3\) 的形式

所以可以證明 \(\sigma\) 在質數處為 0 ,又由於積性,可以得到以上結論

最後得出公式是跟杜教篩公式的過程是一樣的。

不過, \(\sigma\) 只在 Powerful Number 處有值,所以其複雜度是 \(\mathcal O(\sqrt n)\) 的。我們可以用展開卷積的方式

解出所有在質數冪的 \(\sigma\) ,就得到了所有 \(\sigma\)

至於 Powerful Number 的個數界,emm

重要性質(怎麼這個時候才寫):積性函式 \(f\) ,必有 \(f(1)=1\)