有標號的DAG計數 II

2022-05-11 01:10:45 字數 868 閱讀 7215

給定一正整數n,對n個點有標號的有向無環圖(可以不連通)進行計數,輸出答案mod 998244353的結果

考慮 \(o(n^2)\) dp

列舉出度為 \(0\) 的點,構成的新\(dag\)方案數為

\(f[i]=f[i-1]*c_^*2^\)

即從 \(n\) 個點中選出乙個點,作為出度為 \(0\) 的點,然後剩下 \(n-1\) 個點向這個點任意連邊

但是 \(f[i-1]\) 中也會有出度為 \(0\) 的點,那麼就算重了,考慮容斥這個算重的東西

\(f[n]=\sum_^(-1)^**f[i-j]*c_^*2^\)

即至少有乙個出度為 \(0\) 的點-至少有兩個的+....

這個式子可以 分治+\(ntt\) 優化

只需要拆 \(2^\) 這個東西就行了

\(\sqrt(2)\) 的逆元可以列舉求出來

#includeusing namespace std;

typedef long long ll;

const int n=4e5+10,g=116195171,mod=998244353;

inline int qm(int x,ll k)

return sum;

}inline int inv(int x)

int n,m,r[n];

inline void ntt(int *a)

有標號的DAG計數I IV

最近心血來潮來寫一寫這個玩意兒。請特別注意定義生成函式時下標的起始位置。求 n 點帶標號 dag 的數量模 10007 n le5000 資料範圍顯然 o n 2 設 f i 表示答案,列舉 dag 中入度為零的點的數量 j 方案數為 binom ij 將圖拆成兩個部分,前 j 個點向後 i j 個...

有標號DAG計數 生成函式

luogu 首先考慮暴力,很容易得出 f i sum limits 1 binom 2 f i j 相當於列舉度數為0的節點的個數,向不在這個集合裡的點任意連邊,之後需要容斥。考慮如何優化。j i j frac frac frac f i sum limits 1 frac frac sqrt f ...

題解 有標號的DAG計數3

我們已經知道了 f i 表示不一定需要聯通的 i 節點的dag方案,考慮合併 參考 題解 p4841 城市規劃 指數型母函式 多項式ln 然後答案 h i 母函式 h x 就這樣解 由於 h x sum dfrac 則 h x e 球 ln 就是iv,不求的話可以直接手動模擬 f x i i win...