题目链接: http://vjudge.net/problem/viewProblem.action?id=42000
该过程为随即过程,因此总期望值等于个单词对应的期望值,即它们wasted的概率
#include <stdio.h>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
using namespace std;
#define lson o<<1
#define rson o<<1|1
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
#define INF 200000000
#define N 100010
typedef long long ll;
long double lg[N];
void init (){
lg[1]=0;
for(int i=2;i<N;i++){
lg[i]=(long double)log(i)+lg[i-1];
}
}
int main(){
int n,k,cs=1;
init();
while(scanf("%d%d",&n,&k) && n){
long double p,ans=0;
int up,down,put=2*k;
if(2*k>n-1)put=n-1;
long double l0=lg[n-1]-lg[n-1-put];
for(int i=1;i<=n;i++){
up=max(i-1-k,0);
down=max(n-i-k,0);
if(up+down>=put)p=exp(lg[up+down]-lg[up+down-put]-l0);
else p=0;
ans+=1-p;
}
printf("Case %d: %.4lf\n",cs++,(double)ans);
}
return 0;
}