简简单单组合数学
P3158 [CQOI2011]放棋子
(uparrow) 假组合数学,真 ( ext{DP}) 。
(f[i][j][k]) : 用了 (i) 行 (j) 列,涂了前 (k) 种颜色的方案数。
(g[i][j][k]) : 用了 (i) 行 (j) 列,涂了第 (k) 种颜色的方案数(用来辅助 (f) 数组转移)。
n 个点的联通图数量
设 (dp[i]) 表示 (i) 个点的时候的答案。
我们假设已经计算好了 ([1,n-1]) 的情况,现在要将第 (n) 号点加入。
“正难则反”,我们考虑 (n) 个点的非联通图的数量。
假定 (n) 号点与之前的 (n-1) 个点都不连通,那么显然这是一个非联通图。
同时枚举 (1le jle n-1) ,使 (j-1) 个节点连为 (1) 个大小为 (j) 的连通块,选出的方案数为 (inom{n-1}{j-1}) ,选出后的连通块方案数有 (dp[j]) 种。
剩下的 (n-j) 个点随便连边,由 (inom{n-j}{2}) 种情况,而且这些点与前面 (j) 个点没有任何变相连,保证不连通。
于是递推方程为:
[dp[n]=dbinom{n}{2}-sum_{j=1}^{j<n}{dp[j] imes dbinom{n-1}{j-1} imes dbinom{n-j}{2}}
]