BZOJ 3456 城市規劃

2022-05-11 22:48:16 字數 1092 閱讀 3179

題意:求n個點的無向連通圖的方案。(n<=130000)

#include using namespace std;

typedef long long ll;

const int n=130050, fn=n<<2;

const ll mo=1004535809;

ll g[35], ng[35];

int rev[fn];

ll ipow(ll a, int b)

void fft(ll *a, int n, int f) } \pmod $可以替換fft中的複數根= =

證明就不證啦= =你可以對著算導證= =(很簡單的辣= =。可是

fnt如何求逆?其實也很簡單辣= =根是$n^g^}$,這個逆矩陣也是同複數根一樣的證法

然後各種亂搞就行辣= =

至於多項式求逆,如果想到倍增也是很顯然的...一下就能推出來辣= =(不會的就來問我辣= =qq在右邊。。歡迎辣

那麼回到本題,容易得到

$$f(n) = 2^} - \sum_^ 2^} \binom f(i)$$

意義很顯然,所有的圖減去不連通的圖(這裡的技巧太牛了,先取出乙個點列舉這個點所在的連通塊即$f(i)$,而我們可以選擇$\binom$種點與這個點在乙個連通塊內,然後剩下的就是隨便生成圖即$2^}$,乘起來就好辣)

其實這裡很不好搞的,我們需要強行化簡!

發現$f(i), i$$\sum_^ 2^} (n-i)!^ (i-1)!^ f(i) = 2^} (n-1)!^$$

然後容易發現只要設多項式

$$\begin

a & = 2^} i!^ x^i \\

b & = (i-1)!^ f(i) x^i \\

c & = 2^} (i-1)!^ x^i \\

\end

$$原式就是$ab=c$辣。(後邊是我的錯誤= =本來就是不能放入$a$的= =感謝zrt神犇指出(在這裡,為啥不將$(i-1)!^$放進$a$是有原因的555,一開始我放到了$a$就一直跪跪跪!因為這樣的話$a[0]=0$那麼模任何多項式$x^i$都沒有關於$a$的逆元!!!媽媽壓qaq!

然後就是$b=ca^$就是裸的除法辣= =對$a$模一下$x^$即可

bzoj 3456 城市規劃

題意 求n個點的無向連通圖個數 n個點不同,答案對1004535809取模 n 130000 題解 生成函式的種種神奇應用 不過這玩意真是越來越不oi了 笑 這道題首先考慮遞推公式 設f x 為結點數為x的答案 那麼用總的無向圖數減去不連通的無向圖數目就是答案 f i 2 i i 1 2 f j 2...

bzoj3456 城市規劃

time limit 40 sec memory limit 256 mb submit 342 solved 204 submit status discuss 剛剛解決完電力網路的問題,阿狸又被領導的任務給難住了.剛才說過,阿狸的國家有n個城市,現在國家需要在某些城市對之間建立一些 路線,使得整...

bzoj 3456 城市規劃

好像歐爺很久以前就考過這道題了,然而我這個幼兒園小同學到現在才寫 懶得寫題解了,寫完後找幾份好點的題解搬了 求 n 個點無標號簡單無向連通圖個數。方法1那個所謂的 麥克勞林級數 說得有點高階。其實那個式子就是指數生成函式,然後根據某些特性 當然我不會證 指數生成函式可以表示成 e 的冪。方法2 最後...