計數/容斥亂做

計數/容斥亂做

容斥題可以手玩n比較小的情況,然後就大腦升級力,,,

「SHOI2015」超能粒子炮・改

考慮Lucas定理,直接按餘數分下類就能遞歸了

「HAOI2017」方案數

容斥,考慮枚舉第一個經過的障礙物,直接減就行了,就像容斥和莫比烏斯反演的關係一樣,\(n^2\)就沒必要求容斥係數。

「FJOI2017」矩陣填數

\(2^n\)容斥枚舉哪些塊是\(<v\),哪些塊\(\leq v\),容斥係數即爲\(-1^{小於v的塊數}\)

具體實現可以離散化,n個矩形把矩陣分成了\(n^2\)個部分直接計算

「TJOI2019」唱、跳、rap 和籃球

容斥枚舉\(abcd\)有多少個,我不會組合數,可以\(O(n^2)\)dp出來這一部分的方案數。然後計算把剩下的分配一下的方案數,就是四個EGF捲起來,還是比較簡單的。(然而我最開始算的OGF調了半天)

「CTSC2017」吉夫特

\(a_{b_i}\) 必然是 \(a_{b_i-1}\) 二進制上的超集,分塊,設 \(dp[x][y]\) 爲前九位爲 \(x\) ,後九位爲 \(y\) 的子集的方案數,每次就只用枚舉一半,隨機\(a_i\)的情況下很快。

「LibreOJ NOI Round #2」不等關係

講課講的經典套路題,樓下細🔒。

先手玩小情況,考慮\(a>b>c<d\),它就等於\((a>b\ ?\ c<d)-(a\ ?\ b<c<d)+(a<b<c<d)\)

於是我們枚舉變成\(<\)\(>\)有多少個,容斥係數很顯然,最後用個分治NTT。

放樹上也能做到\(n^2\),就是一個樹揹包,不過沒法多項式。

CF838D

考慮加一個位置,然後最後每個位置有沒有人都是等價的,所以用概率分析就做完了。

「HAOI2018」染色

最開始自己推的有一點小問題,原因是這題有兩個恰好,要搞清楚對哪個恰好二項式反演

所以欽定了\(i\)種顏色之後這\(i\)種顏色就不再用了,我們對顏色種數而不是出現次數二項式反演。

\[g(i)={m\choose i}{n\choose is}\frac{(is)!}{\prod_is!}(m-i)^{n-is}=\sum_{j=i}^m {j\choose i}f(j) \]

二項式反演可得:

\[f(k)=\sum_{i=k}^m-1^{i-k}g(i){i\choose k} \]

一遍NTT就做完了,這個要反着卷。預處理階乘最好直接到maxn啊啊啊啊啊WA了好幾回

付公主的揹包

這種不能直接乘的可以取ln加起來,取完ln後的形式可以用泰勒展開分析,之前寫過。

「SDOI2017」遺忘的集合

考慮知道S計算f就是上面的東西,考慮形式化表示這東西,設\(a_i\)表示S中有沒有\(i\),則

\[f=\prod_{i=1}^{n} \frac{1}{\left(1-x^{i}\right)^{a_{i}}}=\exp \left(\sum_{i=1}^{n} a_{i} \sum_{j=1}^{\infty} \frac{x^{i j}}{j}\right) \]

那麼把\(f\)取ln,枚舉什麼j可以產生貢獻,可以得到

\[f_i=\sum_{j|i}a_j\frac{j}{i}=\frac{1}{i}\sum_{j|i}a_jj \]

莫比烏斯反演即可得到\(a_i\),這題還要MTT求\(\ln\)噁心的很。

ODE

一直不擅長這個,就是expln的意義啥的

斐波那契

\(F(i)\) 表示第 \(i\) 個斐波那契數,給定 \(n\),考慮所有正整數序列 \({ai}\) 使得 \(a_1+a_2+…+a_m=n\),求所有方案下 \(F(a1)*F(a2)*…*F(am)\) 的和。

設斐波那契數列是\(f\),答案\(g=1+f+f^2+\cdots=\frac{1}{1-f}=\frac{1-x-x^2}{1-2x-x^2}\)

然後要用生成函數解遞推式,考慮把分母乘到左邊,

\[(1-2x-x^2)g=1-x-x^2 \]

可以想象是後面都消掉了只剩前三項,那麼可以得到第三項後的遞推式\(g[i]=2*g[i-1]+g[i-2]\)

我們設前三項的係數是\(a,b,c\),那麼有

\[(1-2x-x^2)(a+bx+cx^2)=1-x-x^2 \\a=1 \\b-2a=-1\\ -a-2b+c=-1 \]

解得

\[a=1,b=1,c=2 \]

就可以矩陣快速冪了。

luoguP4705 玩遊戲

這個題可以轉化成數列k次方和,

考慮數列k次方和的答案的生成函數爲:

\[\sum_{i=0}^{\infty} x^{i} \sum_{j=1}^{n} a_{j}^{i}=\sum_{j=1}^{n} \frac{1}{1-x a_{j}} \]

這樣己經可以分治 NTT 了,通分之後同時維護分子分母即可。

吐了,我再用vector寫任何多項式算法立馬喫屎

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