关闭

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

标签: codeforces
1027人阅读 评论(0) 收藏 举报
分类:

Kyoya Ootori has a bag with n colored balls that are colored with k different colors. The colors are labeled from 1 to k. Balls of the same color are indistinguishable. He draws balls from the bag one by one until the bag is empty. He noticed that he drew the last ball of color ibefore drawing the last ball of color i + 1 for all i from 1 to k - 1. Now he wonders how many different ways this can happen.

Input

The first line of input will have one integer k (1 ≤ k ≤ 1000) the number of colors.

Then, k lines will follow. The i-th line will contain ci, the number of balls of the i-th color (1 ≤ ci ≤ 1000).

The total number of balls doesn't exceed 1000.

Output

A single integer, the number of ways that Kyoya can draw the balls from the bag as described in the statement, modulo 1 000 000 007.

Sample test(s)
input
3
2
2
1
output
3
input
4
1
2
3
4
output
1680
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 3
1 1 2 2 3

2 1 1 2 3

这道题让我学会了组合数的计算,因为直接用组合数公式会导致结果不准确,如C(100,50)这样,如果用乘一个数除一个数的方法,那么可能会导致不能整除而会发生误差。

思路:若前i种颜色的方法总数是f(i),那么第i+1种颜色的方法总数是f(i+1)=f(i)*C(sum(i+1)-1,a[i+1]-1),其中sum(i+1)是前i+1种颜色的个数总和。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<string>
#include<map>
#include<algorithm>
using namespace std;
#define ll __int64
#define maxn 1000000007
int a[1600];
ll c[1050][1060];
ll sum;

int main()
{
	int n,m,i,j,sum1;
	for(i=1;i<=1000;i++)c[i][0]=1;
	
	for(i=1;i<=1000;i++){
		for(j=1;j<=i;j++){
			if(i==j)c[i][j]=1;
			else if(i>j)
			c[i][j]=(c[i-1][j]+c[i-1][j-1])%maxn;
		}
	}
	
	while(scanf("%d",&n)!=EOF)
	{
		for(i=1;i<=n;i++){
			scanf("%d",&a[i]);
		}
		sum1=a[1];sum=1;
		for(i=2;i<=n;i++){
			sum1+=a[i];
			//printf("%d %d\n",a[i]-1,sum1-1);
			sum=(sum*c[sum1-1][a[i]-1])%maxn;
			//sum=(sum*f(a[i]-1,sum1-1))%maxn;
			//printf("%lld\n",sum);
		}
		printf("%I64d\n",sum);
	}
	return 0;
}


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

数学推公式——较难——Codeforces Round #187 (Div. 2)

题目链接: http://codeforces.com/contest/315/problem/C C. Sereja and Contest time limi...
  • CS_liuqing
  • CS_liuqing
  • 2013-06-16 15:34
  • 1987

【Codeforces Round 340 (Div 2)E】【莫队算法 真实区间思想】XOR and Favorite Number m组区间询问 问区间中多少连续段异或值为k

E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megab...
  • snowy_smile
  • snowy_smile
  • 2016-02-28 13:06
  • 2842

Codeforces 题目合集+分类+蒟蒻的代码 【Updating...】【232 in total】

Codeforces 题目合集+分类+蒟蒻的代码 【Updating...】
  • my_sunshine26
  • my_sunshine26
  • 2017-07-29 23:42
  • 1405

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

C. Kyoya and Colored Balls Kyoya Ootori has a bag with n colored balls that are colored with k diff...
  • u010579068
  • u010579068
  • 2015-06-26 14:48
  • 1180

Codeforces 554C. Kyoya and Colored Balls【组合数 逆元】

C. Kyoya and Colored Balls time limit per test 2 seconds memory limit per test 256 megab...
  • wyjwyl
  • wyjwyl
  • 2016-04-22 20:50
  • 204

【47.95%】【codeforces 554C】Kyoya and Colored Balls

time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandar...
  • harlow_cheng
  • harlow_cheng
  • 2016-12-12 07:21
  • 120

Codeforces554C:Kyoya and Colored Balls(组合数学+费马小定理)

Kyoya Ootori has a bag with n colored balls that are colored with k different colors. The colors a...
  • libin56842
  • libin56842
  • 2015-06-26 15:07
  • 2149

Codeforces Round #309 (Div. 1) B. Kyoya and Permutation(数学)

B. Kyoya and Permutation time limit per test 2 seconds memory limit per test 256 megabyt...
  • u013268685
  • u013268685
  • 2015-07-03 10:38
  • 1012

Codeforces Round #403 (Div. 2) C. Andryusha and Colored Balloons(DFS 邻接表 数据结构)

C. Andryusha and Colored Balloons time limit per test2 seconds memory limit per test256 megabytes ...
  • qq_32680617
  • qq_32680617
  • 2017-03-07 20:36
  • 200

Codeforces Round #403 (Div. 2) C. Andryusha and Colored Balloons DFS

题意:给出一颗无根树,要求如果a-b相连 b-c相连,则要求abc涂上不同的颜色,要求用最少的颜色给这颗树上色且求具体涂色。 DFS 首先这个最少的颜色数必定是 最大度+1, 然后具体涂色的时候可以d...
  • ProLightsfxjh
  • ProLightsfxjh
  • 2017-03-21 00:13
  • 303
    个人资料
    • 访问:175768次
    • 积分:5522
    • 等级:
    • 排名:第5596名
    • 原创:392篇
    • 转载:0篇
    • 译文:0篇
    • 评论:31条
    友情链接,,Ծ‸Ծ,,
    Asuna_acmer
    最新评论