SRM625 缺了名字的题目 [DP]
题目描述
N 个座位的圆桌,K 个人去坐, 任意时刻联通块数量 <=G(人和桌子座位均有序)
求方案数(两个方案数不同当且仅当有一个人的座位不同)
数据范围
N, K, G <=2000
题解
设 f[i][j] f [ i ] [ j ] 表示前 i i 个人构成了个联通块的方案数。
方程(刷表法):
f[i+1][j+1]+=j∗f[i][j] f [ i + 1 ] [ j + 1 ] + = j ∗ f [ i ] [ j ] ,表示第j+1个人单独占一个位置。
f[i+1][j]+=2∗j∗f[i][j] f [ i + 1 ] [ j ] + = 2 ∗ j ∗ f [ i ] [ j ] ,表示第j+1个人合并到其中一个联通块内,乘以2是因为第j+1个人可以坐在同一个联通块的左右。
f[i+1][j−1]+=j∗f[i][j] f [ i + 1 ] [ j − 1 ] + = j ∗ f [ i ] [ j ] ,表示第j+1个人坐在两个联通块中间的唯一一个位置上,合并了两个联通块。