2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) K Tournament Wins
题目链接:http://codeforces.com/gym/101201
/*
* @Author: lyucheng
* @Date: 2017-10-22 14:38:52
* @Last Modified by: lyucheng
* @Last Modified time: 2017-10-22 16:37:43
*/
/*
* 题意:2^k次方个人两两进行淘汰赛,排名高的人一定能胜过排名低的人,问你排名r的人的胜场期望
*
* 思路:首先,如果r想赢i场的话那么一定要和2^i - 1个人在一个赛程二叉树中,所以r最多能赢的场次
* 就是(int)log2(2^k-r+1),也就是r和比他弱的人最大能组成的二叉树的深度,所以r能赢i场的概率
* 就是 C(2^k - r,2^i - 1) / C(2^k - 1, 2^i - 1)就是从比他弱的人里面选出2^i - 1个人数情况
* 除以从剩下的2^k - 1个人里选出 2^i - 1个人的情况,这只是前i场赢的概率,我们处理出来赢0~最
* 大场次的所有概率,就可以从最大场次向最低场次处理得出来所有准确能赢场数的概率,最后的期望
* 就是 ∑(准确能赢i场的概率(第i+1场一定输)*i
* */
#include <bits/stdc++.h> #define MAXN (1<<20) using namespace std; int k,r;
int n;
double f[MAXN];
int tol;
double cur[MAXN];
double need;
double res; double cal(int n,int m){
return f[n]-f[m];
} inline void init(){
memset(f,,sizeof f);
for(int i=;i<MAXN;i++)
f[i]=f[i-]+log(i);
res=;
} int main(){
// freopen("in.txt","r",stdin);
init();
scanf("%d%d",&k,&r);
n=(<<k);
tol=(int)(log(n-r+)/log());
for(int i=;i<=tol;i++){
need=(<<i);
cur[i]=exp(cal(n-need,n-need-(r-))-cal(n-,n-r));
}
double last=;
for(int i=tol;i>=;i--){
res+=(cur[i]-last)*i;
last+=(cur[i]-last);
}
printf("%.5f\n",res);
}
2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) K Tournament Wins的更多相关文章
- 2018 ICPC Pacific Northwest Regional Contest I-Inversions 题解
题目链接: 2018 ICPC Pacific Northwest Regional Contest - I-Inversions 题意 给出一个长度为\(n\)的序列,其中的数字介于0-k之间,为0 ...
- 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)
2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 思路: A Exam 思路:水题 代码: #include<bits ...
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Solution
A:Alphabet Solved. 签. #include<bits/stdc++.h> using namespace std; ]; ]; int main(){ scanf(); ...
- Contest Setting 2018 ICPC Pacific Northwest Regional Contest dp
题目:https://vj.69fa.cn/12703be72f729288b4cced17e2501850?v=1552995458 dp这个题目网上说是dp+离散化这个题目要对这些数字先处理然后进 ...
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) S Surf
SurfNow that you've come to Florida and taken up surng, you love it! Of course, you've realized that ...
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) 题解
[题目链接] A - Alphabet 最长公共子序列.保留最长公共子序列,剩余的删除或者补足即可. #include <bits/stdc++.h> using namespace st ...
- 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Solution
A:Exam Solved. 温暖的签. #include<bits/stdc++.h> using namespace std; ; int k; char str1[maxn], st ...
- 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)
A. Odd Palindrome 所有回文子串长度都是奇数等价于不存在长度为$2$的偶回文子串,即相邻两个字符都不同. #include<cstdio> #include<cstr ...
- 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) B - Enlarging Enthusiasm dp好题
B - Enlarging Enthusiasm 感觉做到过好多的dp题都会和单调性结合在一起. 思路:dp[ s ][ pre ][ res ] 表示的是已选择了s,上一个是pre, 还有res 的 ...
随机推荐
- Java并发之线程中断
前面的几篇文章主要介绍了线程的一些最基本的概念,包括线程的间的冲突及其解决办法,以及线程间的协作机制.本篇主要来学习下Java中对线程中断机制的实现.在我们的程序中经常会有一些不达到目的不会退出的线程 ...
- Hive内置数据类型
Hive的内置数据类型可以分为两大类:(1).基础数据类型:(2).复杂数据类型.其中,基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBL ...
- 2014 Benelux Algorithm Programming Contest (BAPC 14)E
题目链接:https://vjudge.net/contest/187496#problem/E E Excellent Engineers You are working for an agency ...
- PHP计算上个月的开始时间和结束时间戳
$m = date('Y-m-d', mktime(0,0,0,date('m')-1,1,date('Y'))); $t = date('t',strtotime($m)); //上个月共多少天 $ ...
- 高德地图测两点距离android比较精确的
/////参考资料:高德官方:[http://lbs.amap.com/api/android-location-sdk/guide/android-location/getlocation] 主要三 ...
- Java面向对象 继承(下)
Java面向对象 继承(下) 知识概要: (1)抽象类 1.1 抽象类概述 1.2 抽象类的特点 ...
- 实用的Jquery选项卡TAB
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 第二章 MySQL入门篇
第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...
- hdu5696 区间的价值
区间的价值 我们定义"区间的价值"为一段区间的最大值*最小值. 一个区间左端点在L,右端点在R,那么该区间的长度为(R-L+1). 现在聪明的杰西想要知道,对于长度为k的区间,最大 ...
- git无法pull仓库refusing to merge unrelated histories
本文讲的是把git在最新2.9.2,合并pull两个不同的项目,出现的问题如何去解决fatal: refusing to merge unrelated histories 我在Github新建一个仓 ...