Pocky HDU 5984(几何概型-期望)

原题

链接

解析

设函数f(x)表示长度为x的棒截断次数的期望值.

(1) 明显当x<=d时,f(x)=0;

(2) 当f(x)>d时,f(x)=1+f(0~d)+f(d~x).

1表示必定要截断一次,f(0~d)表示截断一次后剩下0~d长度时的期望值,f(d~x)表示截断一次后剩下d~x长度时的期望值.

由(1)知,f(0~d)=0,关键在于求f(d~x),在长度为x的棒上截断一次,截断概率均为1/x,因此f(d~x)=(1/x)*∫(x,d)f(x)dx.

有f(x)=1+(1/x)*∫(x,d)f(x)dx,两边求导,f′(x)=-(1/x2)*∫(x,d)f(x)dx+(1/x)f(x).联立f(x)和f′(x)的表达式求的,f′(x)=1/x,则f(x)=lnx+C,把f(d)=1代入解得C=-lnd+1.

综上所述有

f(x)={0,x<=d

   {lnx-lnd+1,x>d

代码

 1 #include <iostream>
 2 #include <cmath>
 3 
 4 using namespace std;
 5 
 6 typedef long long LL;
 7 
 8 int main()
 9 {
10     int t;
11     cin>>t;
12     while(t--)
13     {
14         double x,y;
15         scanf("%lf %lf",&x,&y);
16         if(x<=y) printf("0.000000\n");
17         else printf("%.6f\n",log(x)-log(y)+1);
18     }
19     return 0;
20 }

猜你喜欢

转载自www.cnblogs.com/VBEL/p/11956932.html