bzoj 3456: 城市规划【NTT+多项式求逆】
參考:http://blog.miskcoo.com/2015/05/bzoj-3456
首先推出遞推式(上面的blog講的挺清楚的),大概過程是正難則反,設(shè)g為n個(gè)點(diǎn)的簡(jiǎn)單(無重邊無自環(huán))無向圖數(shù)目,顯然邊數(shù)是\( C_{n}^{2} \),所以\( g(n)=2^{C_{n}^{2}} \),那么f[n]=g[n]-n個(gè)點(diǎn)的簡(jiǎn)單(無重邊無自環(huán))無向不連通圖數(shù)目,后面那部分可以枚舉1所在聯(lián)通塊的1點(diǎn)數(shù),當(dāng)這個(gè)塊有i個(gè)點(diǎn)時(shí),方案數(shù)為從n-1個(gè)點(diǎn)中選出i-1個(gè)(減去點(diǎn)1)* f[i](這i個(gè)點(diǎn)組成無向連通圖方案數(shù))*g[n-i](剩下的點(diǎn)組成無向圖的方案數(shù)),寫成公式就是\( \sum_{i=1}^{n-1}C_{n-1}^{i-1}f[i]g[n-i] \),然后把這兩部分相減就得到了遞推式:
\[ f[n]=g[n]-\sum_{i=1}^{n-1}C_{n-1}^{i-1}f[i]g[n-i] \]
\[ f[n]=2^{C_n^2}-\sum_{i=1}^{n-1}C_{n-1}^{i-1}f[i]2^{C_{n-i}^2} \]
然后開始大力推式子,目標(biāo)是推出卷積!
\[ f[n]=2^{C_n^2}-\sum_{i=1}^{n-1}C_{n-1}^{i-1}f[i]2^{C_{n-i}^2} \]
\[ f[n]=2^{C_n^2}-\sum_{i=1}^{n-1}\frac{(n-1)!}{(i-1)!(n-i)!}f[i]2^{C_{n-i}^2} \]
\[ f[n]=2^{C_n^2}-(n-1)!\sum_{i=1}^{n-1}\frac{2^{C_{n-i}^2}f[i]}{(i-1)!(n-i)!} \]
\[ f[n]=2^{C_n^2}-(n-1)!\sum_{i=1}^{n-1}\frac{f[i]}{(i-1)!}*\frac{2^{C_{n-i}^2}}{(n-i)!} \]看起來有點(diǎn)樣子了,然而這是遞推式怎么辦!
開始等號(hào)左右瞎移項(xiàng)
\[ 2^{C_n^2}-f[n]=(n-1)!\sum_{i=1}^{n-1}\frac{f[i]}{(i-1)!}*\frac{2^{C_{n-i}^2}}{(n-i)!} \]
\[ 2^{C_n^2}=(n-1)!\sum_{i=1}^{n-1}\frac{f[i]}{(i-1)!}*\frac{2^{C_{n-i}^2}}{(n-i)!}+f[n] \]
\[ 2^{C_n^2}=(n-1)!\sum_{i=1}^{n}\frac{f[i]}{(i-1)!}*\frac{2^{C_{n-i}^2}}{(n-i)!} \]
\[ \frac{2^{C_n^2}}{(n-1)!}=\sum_{i=1}^{n}\frac{f[i]}{(i-1)!}*\frac{2^{C_{n-i}^2}}{(n-i)!} \]
\[ a[i]=\frac{f[i]}{(i-1)!},b[i]=\frac{2^{C_{i}^2}}{(i)!},c[i]=\frac{2^{C_i^2}}{(i-1)!} \]
于是變成了這樣的形式:\( A*B=C \),現(xiàn)在要求的是A,所以把它變形為\( A=B^{-1}*C \)
這里涉及到了多項(xiàng)式求逆元,在這里簡(jiǎn)述一下(參考:http://blog.csdn.net/qq_33229466/article/details/70212684):
求\( A?G=1(mod?x^m) \)
已有B滿足\( A?B=1(mod?x^{\frac{m}{2}}) \)
因?yàn)閈( A?G=1(mod?x^{\frac{m}{2}}) \)
所以\( (G?B)=0(mod?x^{\frac{m}{2}}) \)
兩邊平方\( G^2+b^2-2GB=0(mod?x^{\frac{m}{2}}) , G^2=2GB-b^2(mod?x^{\frac{m}{2}}) \)
同乘A得\( G=2B-AB \)
然后遞歸求即可
轉(zhuǎn)載于:https://www.cnblogs.com/lokiii/p/8475486.html
總結(jié)
以上是生活随笔為你收集整理的bzoj 3456: 城市规划【NTT+多项式求逆】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts2的自动装配
- 下一篇: 案例39-后台查询订单详情代码实现