[Gym-101201K]
来源:互联网 发布:比特精灵软件下载 编辑:程序博客网 时间:2024/05/17 01:22
/************************************************************************* > Author: MentalOmega > Mail: 965194745@qq.com > Created Time: 2017年10月7日 > function:题意说的是有2^k个人两两打淘汰赛,排名靠前的一定会在两两对局中打败排名后的,在随机开局中问排名第r的人 赢的场数的期望是多少。最重要的一点是最后的期望胜场数=∑至少胜i场的概率*i 那么要赢i场,那么跟排第r一起的还需要在比第r后的人中再选出2^i-1个人来,概率显然是C(2^k-r,2^i-1) / C(2^k,2^i-1) 剩下的问题是考虑这个除法的精度问题,用取对数的方法来解决。 ************************************************************************/#include<bits/stdc++.h>using namespace std;const int MAXN = 1<<20;long double logfac[MAXN];long double A(int m,int n){ return logfac[m]-logfac[m-n];}int main(){ if (fopen("in.txt", "r") != NULL) { freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); } for(int i=1;i<MAXN;i++) logfac[i]=logfac[i-1]+log(i); int k,r; while(~scanf("%d%d",&k,&r)) { long double ans = 0; int n=1<<k; for(int i=1;i<=k;i++) { int need = (1<<i)-1; if(need>n-r) break; ans += exp(A(n-r,need)-A(n-1,need)); } printf("%.5f\n",(double)ans); } return 0;}
阅读全文
0 0
- [Gym-101201K]
- GYM 100685 K
- Gym 100796K Profact
- Gym 100947K-Jpeg
- codeforces [Gym-100814K]
- Gym-101498K
- Gym 101490K
- Gym 101512K
- Gym 101490K dp
- Gym 101164.K
- Gym 101398. K
- Gym-100712K-Runtime Error
- Gym 100712K Runtime Error
- Gym 100712K Runtime Error
- Gym 101116K Mixing Bowls
- Codeforces gym 101149 K 想法
- Codeforces gym 101102 K 想法
- codeforces Gym 101341 K Competitions
- C++虚函数与虚函数表
- 网络编程多播——Multicast
- 小米4 android6.01的开发者模式开启方法
- 【机器学习 吴恩达】CS229课程笔记notes1翻译-Part II分类和logistic回归
- 1.2算法基本举例(下篇)
- [Gym-101201K]
- 单元测试
- Qt 中实现在控件中点击鼠标,就在鼠标点击处加载图片的方法
- 算法设计与分析笔记之(7):概率算法
- 数学趣事
- 最短排序数组(动态规划)
- 用C2制作小游戏
- Jzoj4604 树
- Construction sets 二分+背包