Description
Snuke喜欢五颜六色的球,他一共有 n∗k 个。有 n 种颜色,每种颜色有 k 个球。现在他将所有球以任意顺序排成一排,然后将每种颜色的最左边的球染成一种新的颜色。求重新染色后的球的颜色序列有多少种,答案对1000000007取模。
Input
一行两个整数 n,k 。
Output
一行一个整数表示方案数。
Sample Input
sample input 1:
2 2
sample input 2:
3 1
sample input 3:
2 3
Sample Output
sample output 1:
4
sample output 2:
1
sample output 3:
14
DP。
首先我们可以先确定放颜色的顺序,最后在乘一个 n ! n! n!就可以啦,我们就按顺序放,从颜色1到颜色n。
显然,0出现的个数肯定是 > = >= >=其他颜色出现的种类数的。
设 d p [ i ] [ j ] dp[i][j] dp[i][j]表示出现了 i i i个零,已经放完了 j j j种颜色的方案数。
我们在放颜色的时候有两种情况:
1.放一个零颜色。
那我们的零只能放在下一位,这就是多放了一个0。贡献就是:
d p [ i ] [ j ] + = d p [ i − 1 ] [ j ] dp[i][j]+=dp[i-1][j] dp[i][j]+=dp[i−1][j]
2.放一种新颜色
我们接着放了颜色x,那么颜色x还剩k-2个,我们要排好这k-2个颜色的位置,一共 C n ∗ k − i − ( j − 1 ) ∗ ( k − 1 ) − 1 k − 2 C_{n*k-i-(j-1)*(k-1)-1}^{k-2} Cn∗k−i−(j−1)∗(k−1)−1k−2种情况,贡献就是:
一共可以放的位置: