相比與 \(\rm ntt/fft\) 中的加法卷積,這裡支援了位運算卷積,原理基於集合冪級數研究
vfk 的**閱讀沒有任何門檻,所以就不抄一遍了
code displayinline void and(int *f,int lim,int opt)
void operator-=(const node &p)
node operator*(const node &p)const
}f[n],g[n];
inline void fwt(node *f,int lim,int opt)\)
思考本質就能發現這個並不需要每次快速冪
統計答案記得減掉空集的情況,同時 \(\rm fwt\) 的模數應為 \(1e9+6\)
樸素的 \(dp\) 式子為 \(f[i][j]=f[i-1][j]+2\times f[i-1][j\oplus a_i]\),使用 \(\rm fwt\) 優化
但不一樣的是這個題目中的係數變成了 \(-1/3\)
那麼對於 \(fwt\) 出來的陣列,解一元一次方程得到 \(-1\) 的個數 \(k\) 和 \(3\) 的個數 \(n-k\)(也就是必然會產生貢獻)
那麼用次冪替換掉之後 \(\rm ifwt\) 即可
需要 \(min-max\) 容斥的科技:
\[\min(s)=\sum\limits_ (-1)^\max(t)
\]同時可以反過來寫:
\[\max(s)=\sum\limits_ (-1)^\min(t)
\]證明主要考慮分 \(|t|\) 的奇偶性把多餘的都消掉剩下 \(t=\\)
這題主要是考慮了應用到期望上的式子
\[(\max(s))=\sum\limits_ (-1)^ e(\min(t))
\]最終求的就是 \(e(u)\) 那麼現在沒有的就是 \(e(\min(t))\)
用封閉形式等等大力推推式子,得到 \(e(\min(t))=\frac\)
剩下的就是子集和,\(\rm fwt\) 即可
首先 \(\min-\max\) 容斥轉化為求集合最小值
\[f(s,x)=\frac f(y)}+1
\]即求到了 \(s\) 集合中的點的最小步數,把父親的提出來,設 \(f[t]=k_t\times f[x]+b_t\)
推出來式子為 \(k_x=\frac1,b_x=\frac\),均與父親節點的資訊無關
那麼對於每種取值集合都 \(dfs\) 一下得到 \(b[rt]\)
接下來就是 \(\rm fwt\) 求子集和了
更多集合冪級數的題目參考
學習筆記 集合冪級數
我們要求形如這樣的乙個卷積 h s sum sum l cup r s f l g r 回憶一下之前所學的莫比烏斯反演,本質上是把質因子看成多重集合,這裡的集合並等價於莫比烏斯反演的兩個數的 text 不妨直接對這個集合做莫比烏斯變換,定義 f s sum f t f s sum 1 f t 對這個...
集合冪級數感性學習筆記
集合冪級數的性質真的太美了。這裡簡要記錄一些操作。下文若無特殊說明集合冪級數間乘法定義為集合不交並卷積 子集卷積 對於集合不交並卷積,常見的處理方法是設出佔位多項式,對兩維分別卷積。實際上這兩維是十分獨立的,類似於二元生成函式的兩個形式冪。因此針對集合冪級數進行的運算,由於我們在佔位維上的運算就是普...
集合 C 入門學習筆記目錄
c 學習筆記 0 c與c 的區別 c 學習筆記 1 c 四大特性 c 學習筆記 2 初識類與物件,類的定義與物件的和建立 c 學習筆記 3 this指標 c 學習筆記 4 建構函式和析構函式 c 學習筆記 5 建構函式的3個作用 c 學習筆記 6 引用 c 學習筆記 7 拷貝建構函式 c 學習筆記 ...