Problem K — limit 1 second Tournament Wins

2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Problem K  Tournament Wins-LMLPHP

这个题就是有2^n队伍,他现在的实力水平是第k位,采用的是淘汰制

问一下你他的胜场数的期望

这人能 win>=i 场的概率就是和它同一个半区的 2^i 个人都比他弱啊

所以去枚举这个2^i,E(X)=\sum P(X>=i) 直接搞一下就好了

我每次的概率都在前一次的算,这样避免了多次枚举,之后求下差就好,所以这个算法是2^n的

#include <bits/stdc++.h>
using namespace std;
double p[];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
int tot=<<n;
p[]=;k--;
for(int i=;(<<i)<=tot-k;i++)
{
p[i]=p[i-];
for(int j=tot-(<<(i-));j>tot-(<<i);j--)
p[i]=p[i]*(j-k)/j;
}
double ans=.;
for(int i=;i<=n;i++)
ans+=(p[i]-p[i+])*i;
printf("%.5f",ans);
return ;
}
05-24 07:37