Codeforces Round #309 (Div. 2) C. Kyoya and Colored Balls

Note

In the first sample, we have 2 balls of color 1, 2 balls of color 2, and 1 ball of color 3. The three ways for Kyoya are:

1 2 1 2 31 1 2 2 32 1 1 2 3题意是,给点一系列的球,要保证每个下标为k的最后一个球后没有比k号小的球,排列组合的个数!这是一个排列组合的问题,首先考虑前k个球,任意一个组合,对于k+1而言没有任何区别,所以,可以从前住后推!对于第k号球,,由于,其总是要有一个球放在最后一个,所以有m-1个球会插入到前面序列的间隔空里,前面间隔空有sum-1个空,sum是前面总的球的个数!则列等式x1 + x2 + … + xsum = m-1;可用组合公式解出c[sum-1][m-1];递推即可得出最后的答案!#define N 1005#define MOD 1000000007int n,pri[N];long long C[N][N];void GetC(){C[0][0] =C[1][0] = C[1][1] = 1;for(int i=2;i<N;i++){C[i][0] = 1;C[i][i] = 1;for(int j=1;j<i;j++){C[i][j] = (C[i-1][j-1] + C[i-1][j]) % MOD;}}}int main(){int m;GetC();while (S(n) != EOF){long long ans = 1;int sum = 0;FI(n){S(m);sum +=m;ans *= C[sum -1][m – 1];ans %= MOD;}cout<<ans<<endl;}return 0;}

三亚呀——赴一个蓝天碧海。

Codeforces Round #309 (Div. 2) C. Kyoya and Colored Balls

相关文章:

你感兴趣的文章:

标签云: