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 int main()
 9 {
10     int n,m,h;
11     scanf("%d%d%d",&n,&m,&h);
12     int sum=0;
13     for(int i=1;i<=m;i++)
14     {
15         scanf("%d",&s[i]);
16         sum+=s[i];
17     }
18     if(sum<n)
19     {
20         printf("-1\n");
21     }
22     else if(s[h]==1)
23     {
24         printf("0\n");
25     }
26     else if(sum-s[h]<n-1)
27     {
28         printf("1\n");
29     }
30     else
31     {
32         s[h]--;
33         sum--;
34         double cnta=1;
35         for(LL i=sum-s[h]-n+2;i<=sum-n+1;i++)
36         {
37             cnta*=i;
38         }
39         for(LL i=sum-s[h]+1;i<=sum;i++)
40         {
41             cnta=cnta/i;
42         }
43         printf("%.6f\n",1.0-(double)cnta);
44     }
45
46     return 0;
47 }

时间: 2024-08-05 19:31:02

cf 108b basketball team 组合数学的相关文章

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 <al

Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 )

Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 ) 题意: 有N个人,选一个或多个人参加比赛,其中一名当队长,有多少种方案? (如果参赛者完全相同但是队长不同,也算是一种情况) [ 1<=n <= 10^9 ] 分析: 这题要用到组合式公式的性质 转化之后快速幂取模轻松搞定之 代码: //Uva 11609 - Team /* 组合数公式 + 二项式系数性质 + 快速幂 手动自己推 -> F[n] = C(n,1)*1 + C(n,2)*2 + C(n,n

2019徐州网络赛 XKC&#39;s basketball team 线段树

网址:https://nanti.jisuanke.com/t/41387 题意: 大家好,我是训练时长两年半的个人练习生蔡徐坤,我的爱好是唱,跳,rap,篮球. 给出一段长度为$n,(n \leq 1e5)$的序列,对每一个数,求出它和它后面比它大$m$的数中间夹着的数的数量,没有输出$-1$. 题解: 直接建线段树,维护最大值,然后查询时对第$i$个数,搜索区间$[i,n]$之中大于$num[i]+m$的值的位置的最大值,具体操作是先限定区间,然后求出所有合法位置,取最大值,如果搜索不到则返

XKC&#39;s basketball team【线段树查询】

XKC , the captain of the basketball team , is directing a train of nn team members. He makes all members stand in a row , and numbers them 1 \cdots n1?n from left to right. The ability of the ii-th person is w_iwi? , and if there is a guy whose abili

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

【字源大挪移—读书笔记】 第二部分:字根

[2] 字根:[2.1]表示[否定]的字根.[2.2]表示[方位]的字根.[2.3]表示[程度]的字根.[2.4]表示[状态]的字根.[2.5]表示[现象]的字根.[2.6]表示[身体]的字根.[2.7]表示[姿势]的字根.[2.8]表示[心,心里活动]的字根.[2.9]表示[行为动作]的字根.[2.10]表示[感官动作]的字根.[2.11]表示[感觉]的字根.[2.12]表示[生命]的字根.[2.13]表示[死亡]的字根.[2.14]表示[社会]的字根 [2.1]表示[否定]的字根 -neg-

Bestcoder#5 1002

Bestcoder#5 1002 Poor MitsuiTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 336    Accepted Submission(s): 70 Problem Description Because of the mess Mitsui have made, (not too long ago, Mitsui,

A Beginner’s Guide to Eigenvectors, PCA, Covariance and Entropy

A Beginner’s Guide to Eigenvectors, PCA, Covariance and Entropy Content: Linear Transformations Principal Component Analysis (PCA) Covariance Matrix Change of Basis Entropy & Information Gain Resources This post introduces eigenvectors and their rela

Android自己动手打造XML解析框架

我们在工作中,经常会从服务器获取数据并进行解析,服务器返回的数据有两种:json和xml.json我们可以用gson或者fastjson等优秀的开源框架去进行解析,省去不少麻烦,通常我们只需要把bean设计出来,然后调用一句话就可以解析成功了.而解析xml数据,我们得去一个标签一个标签的去比较,修改起来也非常麻烦,比如我们现在不需要某一个标签上的数据了,我们还得去把代码中那一行给删除,如果我们的需求又变了,现在又需要加上某个标签的数据,那只能再到代码中把相应代码加上,这样非常麻烦,这篇文章我们将