湫湫系列故事——植树节

Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1315    Accepted Submission(s): 796

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
1
5
3 3 3 3 4
 
Sample Output
0.400
 
Source
正难则反
///这个题的反面情况就是其中两个人认识,两人与另外一人不认识
///第i个人可以选择的情况是选择一个朋友,另外一个不认识,选法有 A[i]= a[i]*(n-a[i]-1) 种
///i个人总共有 sum(A[i])/2 种选法(去掉重复,他选了朋友和朋友选他情况一样),随机共有C(n,3)种选法,所以合法的情况为 1 - sum(A[i])/C(n,3)
#include <stdio.h>
using namespace std; int main(){
int n,t,tcase;
scanf("%d",&tcase);
while(tcase--){
scanf("%d",&n);
int sum = ;
for(int i=;i<=n;i++){
scanf("%d",&t);
sum+= t*(n-t-);
}
sum/=;
int S = n*(n-)*(n-)/;
printf("%.3lf\n",-sum*1.0/S);
}
}

最新文章

  1. 使用scrollpagination实现页面底端自动加载无需翻页功能
  2. git常用指令
  3. ctrl+c,ctrl+d,ctrl+z在linux中意义
  4. linux安装hadoop 1.2.1
  5. Javascript输出表格
  6. Openssl生成根证书、服务器证书并签核证书
  7. Eclipse快捷键 列表整理
  8. 第三章—Windows程序
  9. (转)ECSHOP给分类添加代表图
  10. WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图(转载)
  11. 201521123108 《Java程序设计》第八周学习总结
  12. mysql分区分表
  13. Chrome浏览器调试技巧
  14. ActionBar+Fragment实现顶部标签页
  15. eclipse 的缓存问题
  16. innobackupex 远程备份
  17. 配置完php.ini中的扩展库后,重启apache出现错误1067
  18. 05: jQuery
  19. laravel在控制器中赋值给视图
  20. python+django+mysql配置步骤

热门文章

  1. centos6启动故障排除
  2. pandas中数据聚合【重点】
  3. PHP 代码优化建议
  4. python计算机基础(三)
  5. 如何封装RESTful Web Service
  6. Word 借助VBA一键实现插入交叉引用
  7. leetcode-16-greedyAlgorithm
  8. HBase0.94.2-cdh4.2.0需求评估测试报告1.0之五
  9. 在终端更改MAC的MySQL的root密码
  10. POJ 3241 曼哈顿距离最小生成树 Object Clustering