博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 4503 湫湫系列故事——植树节(组合概率)
阅读量:4139 次
发布时间:2019-05-25

本文共 1720 字,大约阅读时间需要 5 分钟。

湫湫系列故事——植树节

Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1302 Accepted Submission(s): 786
Problem Description
  今天是一年一度的植树节,腾讯幼儿园要求每个老师在班里选出几个小朋友一起去野外种植小树苗,根据学校的整体安排,湫湫老师的班里要选出3个小朋友。 已知湫湫的班里共有n个孩子,每个孩子有Bi个朋友(i从1到n),且朋友关系是相互的,如果a小朋友和b小朋友是朋友,那么b小朋友和a小朋友也一定是好朋友。为了选择的公平性,湫湫老师会随机抽取3个小朋友出来(每个人被抽到的概率相同),但是她很希望这3个小朋友之间的关系完全相同,湫湫老师想请你帮她算算抽到的3个小朋友正好关系相同的概率是多少?
  PS. 关系相同就是指要么3个人互相是好朋友,要么3个人互相都不是好朋友。
Input
输入数据第一行是一个整数T(1<=T<=1000),表示输入数据的组数;每组数据的第一行是一正整数n表示孩子的总数(2<n<=1000),第二行有n个数Bi (i从1到n),分别代表每个小朋友的朋友的个数。
Output
对于每组数据,请输出抽到的3个小朋友关系相同的概率,结果保留3位小数。
Sample Input
153 3 3 3 4
Sample Output
0.400
Source

//转载原文:http://blog.csdn.net/geniusluzh/article/details/8751274 /*题意自不必多说,那我们来看看题中相同关系的定义:互相为朋友关系或者是彼此都没有朋友关系,也就是说三人之间有三条边或者是有零条边都是称为相同关系的。      已经给出了每个点的朋友的个数,也就是与该点相连的点的个数,我们设第i个点的朋友个数为p[i]。于是使用这样一种策略来选出三个点:首先我们选择i号节点,然后我们在p[i]个朋友中选一个;然后在剩余的人中选一个,也就是在n-1-p[i]的人中选一个人;这样子选的三个人有什么特点呢?      我们看到从朋友中选了一个,保证了相同关系中三人无边的情况不会出现;然而在非朋友中选了一个,保证了相同关系中三条边的情况不会出现。也就说上面选三个点的策略保证排除了所有的相同关系的情况,所以对所有i的p[i]*(n-1-p[i])求和就是相同关系补集的元素个数。      再者我们发现按上面的策略选的三个点,没种三点情况总会被重复选一次,于是需要把上面的结果除以2,显然这是没有问题的。      知道了这些,结果就很简单了,其实我认为代码可以不贴。*/#include 
#include
using namespace std; int C(int n, int m) { if(m > n) return 0; else if(m == n) return 1; else { int ans = 1; for(int i=n-m+1; i<=n; i++) ans *= i; for(int i=1; i<=m; i++) ans /= i; return ans; } } int main() { int T, n; int a, b; scanf("%d", &T); while(T--) { scanf("%d", &n); a = b = 0; int temp; double ans = 0; for(int i=0; i

你可能感兴趣的文章
《随遇而安》 孟非
查看>>
如何引用另外一个文件中的串, 顺便说说void print();和(void)print();的区别
查看>>
今天第一次面试别人, 大概聊了近30分钟
查看>>
我经历的那些骗局(要承认, 骗子智商比我们高)
查看>>
C语言一个文件中的函数能直接调用另外一个文件中的静态函数吗? (某公司校园招聘面试试题)
查看>>
有“空洞”的文件的C代码实现
查看>>
简单详解:x^6+4x^4+2x^3+x+1 至少要需要多少次乘法? (某公司实习生招聘笔试试题)
查看>>
int a1=x+y-z; int a2=x-z+y; a1和a2的值一定相等吗? (某公司实习生招聘笔试试题)
查看>>
聊聊这个与代码优化有关的选择题 (某公司实习生招聘笔试试题)
查看>>
Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile
查看>>
再谈IPC之共享内存 (某公司实习生招聘笔试试题)
查看>>
又见组合数, 好亲切! (某公司实习生招聘笔试试题)
查看>>
数据库表删除之drop table xxx (某公司实习生招聘笔试试题)
查看>>
任务调度时间 (某公司实习生招聘笔试试题)
查看>>
国庆期间遇到两个诈骗团伙
查看>>
BCB如何加载字符串资源文件(语言资源文件)?
查看>>
int fun(){return 1;}在C和C++中不同
查看>>
关于void a;和void *a;
查看>>
C/C++是否存在全局的或者静态的register变量?
查看>>
如何获取float变量在内存中的二进制数据?
查看>>