天天看點

機率dp

一:Uva12230Crossing Rivers (數學期望)

題目大意:

有個人每天要去公司上班,每次會經過N條河,家和公司的距離為D,預設在陸地的速度為1,

給出N條河的資訊,包括起始坐标p,寬度L,以及船的速度v。船會往返在河的兩岸,人到達河岸時,

船的位置是随機的(往返中)。問說人達到公司所需要的期望時間。

思路:

1,過每條河最壞的情況是t=3*L/v; 即去的時候船剛剛走。

2,過沒條河最優的情況是t=L/v; 即去的時候船剛剛來。

3,由于船是均勻釋出的,符合線性性質,是以平均下來,過每條河的時間t=2*L/v。

#include <bits/stdc++.h>
using namespace std;
int n;
double d;
int main()
{
    double p,l,v;
    int cnt=1;
 while(~scanf("%d%lf",&n,&d)){
     if(n+d==0) break;
     double sum = 0.0,ret =0.0;
     for(int i =0;i<n;i++){
         scanf("%lf%lf%lf",&p,&l,&v);
         sum+=l;
         ret+=2.0*l/v;
     }    
     ret+=(d-sum);
     //會自動四舍五入的
     printf("Case %d: %.3f\n\n",cnt++,ret);//再輸出一個空行
 }
 return 0;
}      

繼續閱讀