UVA12230 过河 Crossing Rivers
题目描述
一个人每天需要从家去往公司,然后家与公司的道路是条直线,长度为 \(D\)。 同时路上有 \(N\)条河,给出起点和宽度\(W_i\) , 过河需要乘坐速度为\(V_i\) 的渡船; 船在河中的位置随机,固定往返时间. 且该人在陆地上行走速度为 \(1\) .求该人去公司的路途的期望时间。
输入输出样例
输入样例#1:
1 1
0 1 2
0 1
0 0
输出样例#1:
Case 1: 1.000
Case 2: 1.000
思路:过一条河最坏用时为\(3l/v\),即到河边时船正好走了,最优用时为\(l/v\),即到河边是恰好赶上船。然后因为时间满足线性关系,所以平均期望用时为\(2l/v\),然后再加上步行需要的用时即可,还有一个比较坑的地方是要输出两个换行符。
代码:
#include<cstdio>
#define dl double
int n,js;
dl ans,d,p,l,v;
int main() {
while(scanf("%d%lf",&n,&d)==2) {
if(!d) break;
ans=0;
for(int i=1;i<=n;++i) {
scanf("%lf%lf%lf",&p,&l,&v);
d-=l; ans+=2*l/v;
}
printf("Case %d: %0.3lf\n\n",++js,ans+d);
}
return 0;
}
孤注一掷,我怎甘落空?!