cf 553A 排列组合

原创 2015年07月10日 00:06:43

题意 k种颜色,第i种颜色Ci个balls

求第i种颜色的最后一颗球必须在第i+1种颜色的最后一颗球之前

数学排列组合公式

C(n,m)=C(n-1,m)+C(n-1,m-1)

思路:

总的球数为sum,球数为a[i]

从当前最后一种颜色思考,这种颜色的最后一颗球必须放在最后一个位置

将这种颜色放好后还剩sum-1颗球,这种颜色的球还剩a[i]-1

那么对于这a[i]-1颗球,就放在这sum-1中,这些球的位置在这些位置中可以自由放置,那么就有C(sum-1,a[i]-1)种放法

剩下了sum-a[i]个位置,对于这些位置我们可以看作是连续的sum-a[i]个位置

那么之后就是对a[i-1]的球在sum-a[i]个位置中放置,重复上面步骤,每次的放法之积就是结果

代码如下

#include <cstdio>
#include <algorithm>
#include <iostream>
#define MOD 1000000007
#define MAX 1005
int ans[MAX][MAX];
int mp[MAX];
using namespace std;
int main(void){
for(int i = 0;i<MAX;i++)ans[i][0]=1;//初始化
for(int i = 1;i<MAX;i++)
for(int j = 1;j <= i;j++){
ans[i][j]=(ans[i-1][j]+ans[i-1][j-1])%MOD;
}
int sum = 0;
long long cnt = 1;
int k;cin >> k;
for(int i = 1;i<=k;i++)cin >> mp[i],sum += mp[i];
for(int i = k;i>=1;i--){
cnt = (cnt*ans[sum-1][mp[i]-1])%MOD;
sum-= mp[i];
}
cout << cnt << endl;
}


cf 553A dp+组合数学

题意: 有K中颜色去涂球,第i中颜色要涂ci个球,不能位置的球颜色相同是有区别的,涂完第i种球的时候前i-1种球必须先涂完,问总共有多少种涂法分析: 一开始想按涂球的数量递推,然后发现是不行的,复...
  • hzh_0000
  • hzh_0000
  • 2015年06月26日 18:46
  • 395

CF 553A 组合DP

http://codeforces.com/problemset/problem/553/A A. Kyoya and Colored Balls time limit per t...
  • u013573047
  • u013573047
  • 2015年06月28日 10:21
  • 762

codeforces 553 A Kyoya and Colored Balls

这个题,比赛的时候一直在往dp的方向想,但是总有一个组合数学的部分没办法求, 纯粹组合数学撸,也想不到办法…… 其实,很显然。。 从后往前推,把第k种颜色放在最后一个,剩下的k球,还有C(剩余的...
  • chaoweilanmao
  • chaoweilanmao
  • 2015年06月25日 09:53
  • 1209

CodeForces 553A Kyoya and Colored Balls (排列组合)

http://codeforces.com/problemset/problem/553/A A. Kyoya and Colored Balls time limit p...
  • hellohelloC
  • hellohelloC
  • 2015年08月20日 18:09
  • 481

codeforces 553A Kyoya and Colored Balls(组合数学)

题目链接: http://codeforces.com/problemset/problem/553/A 题目大意: 有n个球,有k种颜色,这k种颜色会涂在这些球上。对于颜色i,最后一个涂这个颜色的...
  • aaaaacmer
  • aaaaacmer
  • 2015年10月09日 21:10
  • 328

CF Permutations【排列组合+求和】

B1. Permutations time limit per test 2 seconds memory limit per test 256 megabytes input stand...
  • ydd97
  • ydd97
  • 2015年02月08日 22:59
  • 650

CF 107B Basketball Team [排列组合]

类似高中的盒子取球,关键理解题意 问题转化为,从m个盒子中取n个球,在取了h盒中的一个球的条件下,h盒还取了别的球的概率 可以这样求得 sum表示m个盒子中总共有多少个球 从sum-1中取n-...
  • u011775691
  • u011775691
  • 2014年08月18日 14:42
  • 415

JavaScript实现数学里的排列组合的A和C运算

//自定义组合函数(就是数学排列组合里的C)     function combination(m,n){         return factorial(m,n)/factorial(n,n);/...
  • qq_27682041
  • qq_27682041
  • 2017年06月05日 16:53
  • 992

js 实现排列组合

javascript实现数学中的排列组合。
  • u011113654
  • u011113654
  • 2017年06月11日 17:01
  • 1143

CF卡技术详解——笔记

知识太全面了,摘抄摘不完,还是粘过来加上注释和笔记吧。 重点以及断句用加粗,注释用红括号。 一.CF卡技术及规格 一.CF卡技术及规格   ...
  • huqinweI987
  • huqinweI987
  • 2013年12月04日 21:45
  • 15935
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cf 553A 排列组合
举报原因:
原因补充:

(最多只允许输入30个字)