解题思路:这道题的题意就是给你n,总距离X,速度v;以及n组数据:人行道的左端点和右端点,以及人行道的速度(竖直方向),如果从(0,0)到(X,0)的时间小于2X/v,则输出其时间,否则输出”Too hard“;
需要一定的推导和简单物理知识
代码如下:
1 #include<iostream> 2 #include<stdio.h> 3 #include<cmath> 4 using namespace std; 5 6 int n , X ; 7 double v; 8 int l , r ,x ; 9 double vy ,vyy; 10 double vx ,vxx; 11 double ans1 ; 12 double ans2 = 0 ; 13 int flag = 0; 14 double time = 0; 15 double yy; 16 int main() 17 { 18 scanf("%d%d%lf",&n,&X,&v); 19 ans1 = 2*X/v; 20 while(n--) 21 { 22 scanf("%d%d%lf",&l,&r,&vy); 23 x = l - r; 24 yy += (l-r)*vy; 25 } 26 vyy = -yy/X; 27 if(fabs(vyy)>=v) 28 { 29 flag = 1; 30 } 31 vxx = sqrt(v*v - vyy*vyy); 32 time = X/vxx; 33 if(time>=ans1) 34 { 35 flag = 1; 36 } 37 if(flag==0) 38 { 39 printf("%.3lf",time); 40 }else 41 { 42 printf("Too hard "); 43 } 44 return 0; 45 }