CF 107B Basketball Team [排列组合]

类似高中的盒子取球,关键理解题意

问题转化为,从m个盒子中取n个球,在取了h盒中的一个球的条件下,h盒还取了别的球的概率

可以这样求得

sum表示m个盒子中总共有多少个球

从sum-1中取n-1个球的情况数是总情况数

减去从sum-m[h]取n-1个球的情况数

即是要求的情况数

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
int m[1111];
int main(){
#ifndef ONLINE_JUDGE
	freopen("/home/rainto96/in.txt","r",stdin);
#endif

	int n,mm,h;cin>>n>>mm>>h;
	int sum=0;
	for(int i=1;i<=mm;i++){
		cin>>m[i];
		sum+=m[i];
	}
	if(sum<n)
		cout<<-1<<endl;
	else{
		double ans=1;
		for(int i=0;i<n-1;i++){
			ans*=(sum-m[h]-n+2+i)*1.0/(sum-n+1+i);
		}
		ans=1-ans;
		cout<<ans<<endl;
	}
}

CF 107B Basketball Team [排列组合]

时间: 2024-10-10 04:04:51

CF 107B Basketball Team [排列组合]的相关文章

cf 108b basketball team 组合数学

题意: 某大学有m个学院,每一个学院有si个人,现在要组建一支有n个人的篮球队,已经知道男主角在第h个学院,还有他先被球队录取了,现在学院在剩下的所有人中等概率的挑选出n-1个人 问:男主角想知道球队里面还有人和他来自同一个学院的概率,若不够人数,则输出-1 这道题很简单的组合数学题,但是要注意,计算的中间过程溢出. 1 #include<cstdio> 2 3 const int maxn=1010; 4 #define LL long long 5 6 int s[maxn]; 7 8 i

Codeforces 107B Basketball Team 简单概率

题目链接:点击打开链接 题意: 给定n m h 表示有m个部门,有个人现在在部门h 下面m个数字表示每个部门的人数.(包括他自己) 在这些人中随机挑选n个人,问挑出的人中存在和这个人同部门的概率是多少. 这个人一定在挑出的n个人中. 反向思考.答案是 1 - 不可能概率 不可能概率 = C(n-1, sum-1-a[h]) / C(n-1, sum-1) 发现2个组合数的分母部分相同,所以只需要把2个组合数的分子部分相除即可. #include <cstdio> #include <io

GRE数学老大难:排列组合!

一般来说, 排列组合 = 难题.每每遇上这种类型的题目, 大家就会八仙过海各显神通:在纸上穷举的,掰手指头的, 还有放弃挣扎依靠玄学的…这些方法并非不能带你找到正确答案(真的吗), 只是往往你做完这道题之后….Section时间结束了...170再见 其实出题套路千变万化, 考点万变不离其宗.那么今天我们就来看看排列组合的常见题目类型吧! 类型1 你以为我考的是排列 其实我考的是排列+组合 这类型的题往往设计到“嵌套”的概念:在一组样本里面挑选完之后, 往往又附带有其他的规则. 比如下面这道例题

HDU--5396(区间dp+排列组合)

做这道题的时候,想到会不会是dp,然后发现dp可做,但是一直被自己坑到死. 枚举最后合并的那个位置,然后对于加减号的,分成的前后两个部分都有不同的组合方法, (a1+a2........) +  (b1,b2.............)         对于每个a,被加b的个数的阶乘次 ,对于每个b,被加a的个数的阶乘次 减法同理 乘法特殊一点 (a1+a2........) *  (b1,b2.............)  乘法分配率,直接将两部分的总和相乘即可 想到这些还远远没有结束,因为最

排列组合

(常考)错位排列 有N封信和N个信封,每封信都不装在自己信封里的排列种数记作Dn,则 D1=0,D2=1,D3=2,D4=9,D5=44,D6=265 一.相邻问题---捆绑法 不邻问题---插空法 对于某几个元素不相邻的排列问题,可先将其他元素排好,再将不相邻元素在已排好的元素之间及两端空隙中插入即可. [例题1]一张节目表上原有3个节目,如果保持这3个节目的相对顺序不变,再添进去2个新节目,有多少种安排方法? A.20 B.12 C.6 D.4 [答案]A. [解析] 以下内容需要回复才能看

hdu 1799 (循环多少次?)(排列组合公式)

循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3051    Accepted Submission(s): 1117 Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次OP运算

排列组合问题

一.不同元素子集问题 78. Subsets Given a set of distinct integers, nums, return all possible subsets. 给定一组非重复数字,求出所有可能的子集 解析: 例如 [1,2,3],解法: 首先放[],然后往已有的[]中放1 1. 首先放1 此时已有[ [], 1 ] 2. 然后对[ [], 1 ] 放2 于是此时有 [ [], [1], [2], [1,2] ] 3. 然后对[ [], [1], [2], [1,2] ]

排列组合问题之圆形分布

1.问题1.1 团团坐有一张圆桌,坐了A,B,C,D四个人,已知,D在A的右边,C在D的对面,请问A,B,C,D,的坐次? 解答:这个问题相对简单,我们纸上画一画,就能画出他们的可能的位置了 但是,可能还有一种解,比如我们把A,B,C,D依次右转一个位,也是满足条件的,而且只要保持他们的相对位置不变,依次右转n个位都是问题的解,而且还有个有趣的事情,当他们转了一圈(即右转4个位)后,他们右回到原位了 2.圆形分布上面这个问题就是一种圆形分布,那么他和直线分布的区别在哪里呢?又有什么联系呢?上面文

【noi 2.6_9288】&amp;【hdu 1133】Buy the Ticket(DP / 排列组合 Catalan+高精度)

题意:有m个人有一张50元的纸币,n个人有一张100元的纸币.他们要在一个原始存金为0元的售票处买一张50元的票,问一共有几种方案数. 解法:(学习了他人的推导后~) 1.Catalan数的应用7的变形.(推荐阅读:http://www.cnblogs.com/chenhuan001/p/5157133.html).P.S.不知我之前自己推出的公式“C(n,m)*C(2*m,m)/(m+1)*P(n,n)*P(m,m)”是否是正确的. (1)在不考虑m人和n人本身组内的排列时,总方案数为C(m+