給定一正整數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...