前置知識 FMT:對於兩個下標在 \([0,2^n)\) 的數組 \(f\) 和 \(g\),求: \[h_i=\sum_{j\text{ or }k=i}f_jg_k ...
背包,子集和以及 max, 卷積在特殊情形下的求法 子集和 :總重量不太大 有 n 個物品,每個物品重量為 w i ,且 sum limits i w i C 。你需要對於 k in ,C 均求出是否存在子集和 k 。 時間復雜度 mathcal O frac C sqrt C omega ,空間復雜度 mathcal O n frac C omega 。 我們對於相同重量的物品二進制分組,然后暴 ...
2022-02-01 20:51 3 1972 推薦指數:
前置知識 FMT:對於兩個下標在 \([0,2^n)\) 的數組 \(f\) 和 \(g\),求: \[h_i=\sum_{j\text{ or }k=i}f_jg_k ...
本文參考了 Dance of Faith 大佬的博客 我們定義集合並卷積 \[h_{S} = \sum_{L \subseteq S}^{} \sum_{R \subseteq S}^{} [L \cup R = S] f_{L} * g_{R} \] 最暴力的時候只能 ...
恰好裝滿,表示空間V完全被占用。 之前的題目是說,在不超過空間V的情況下,使價值最大化。 現在考慮動態規划的初始值問題。 在前一個問題中,dp[i][v]初始化設置為0. 因為在初始狀態,背包中沒有任何物品。不論背包的容量多大,里面的價值只是0.這個狀態是合法的。因為背包並沒有超出 ...
FMT 和 子集卷積 FMT 給定數列 $ a_{0\dots 2^{k}-1} $ 求 $ b $ 滿足 $ b_{s} = \sum_{i\in s} a_i $ 實現方法很簡單, 然后稱為 $ B = \text{FMT}(A) $ ,快速莫比烏斯變換 想要還原也很簡單,把代碼 ...
我們比較了解的是有關多項式的乘法運算,對於下標為整數,下標運算為相加等於某個數的時候,我們有很優秀的FFT做法。 但是遇到一些奇怪的卷積形式時,比如我們定義 $h = f * g$, $h_{S} = \sum\limits_{L \subseteq S}^{} \sum\limits_{R ...
最近沒有怎么更新博客,因為一直比較忙。最近發現所里在做的一個項目中,可以抽出一部分內容和0-1背包問題、子集合加總問題非常相似(雖然表面上不容易看出相似點),所以看了一些這方面的資料和論文,這里主要對問題特點和算法思想做一些整理。這類問題其實很有意思,做數學和做計算機的人都會研究 ...
(錯)可見取模下若有除法,結果可能不太對。 為了實現取模意義下的除法/計算取模意義下的除法算式; ...
前言: $FWT$是用來處理位運算(異或、與、或)卷積的一種變換。位運算卷積是什么?形如$f[i]=\sum\limits_{j\oplus k==i}^{ }g[j]*h[k]$的卷積形式(其中$\oplus$為位運算)就是位運算卷積。如果暴力枚舉的話,時間復雜度是$O(n^2)$,但運用 ...