BZOJ3456 城市規劃

2022-05-09 13:18:10 字數 1520 閱讀 8390

轉送門

我們設點數為\(n\)的簡單圖的數量為\(f_n\), 點數為\(n\)的簡單連通圖有\(g_i\)個

於是我們知道,從\(n\)個點中選\(2\)個點有\(n \choose 2\)種選法, 而對於兩個點可以連邊或不連, 於是\(f_n = 2^\)

同時, \(f_n\)還滿足\(f_n = \sum\limits_^}g_if_\), 因為我們可以考慮欽定某一點為聯通塊中的一點, 然後從剩餘的點中找\(i-1\)個點, 練成乙個聯通塊, 剩下隨便, 然後\(i\)取遍\(1 \sim n\)中的所有數後的和為\(f_n\)。

於是, 我們來愉快的推式子

\[2^ = \sum_^ \choose }g_if_

\]把\(f_n = 2^\)帶入

\[\begin

2^ &= \sum_^ \choose }2^ \choose }g_i\\

2^ &= \sum_^\frac/}g_i2^ \choose 2}\\

2^ &= \sum_^\frac}g_i2^ \choose }\\

2^ &= (n-1)!\sum_^\fracg_i2^ \choose }\\

\frac \choose 2}} &= \sum_^\fracg_i2^ \choose }\\

\frac \choose 2}} &= \sum_^ \left(\frac2^ \choose }\right)\left(\fracg_i\right)

\end

\]這是乙個卷積

我們令\(a(x) = \sum\limits_^\frac2^x^i\), \(b(x) = \sum\limits_^\fracg_x^i\), \(c(x) = \sum\limits_^\frac2^x^i\)

於是\(c(x) = a(x)b(x)\)

然後\(b(x) = a(x)c^(x)\)

#include #include #include #include #include using namespace std;

typedef long long ll;

const int n = 520010;

const ll mod = 1004535809ll;

inline ll power(ll a, ll n, ll mod)

return ans;

}struct mul

void ntt(ll * a, int opt)

}} if (opt == -1)

}void getlen(int l)

void init()

} calc;

ll tmp1[n], tmp2[n];

void cpy(ll * a, ll * b, int len1, int len2)

void getinv(ll * a, ll * b, int len)

}ll a[n], b[n], ans[n];

ll fac[n];

int main()

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 最後...