SDUT 2019 Autumn Team Contest 20th
解题关键:运动分解
解题易错:第一遍写错了,因为不知道求出来的值是否符合题意,所以可能造成求出来的正余弦值不符合+-1的范围。
可以不直接解出sin和cos,直接解出vx,vy即可。而且,判断的时候还有一个必要条件就是vy<v.
代码:
#include<bits/stdc++.h>
using namespace std;
#include<math.h>
int main()
{
int n;
cin>>n;
double x1,v1;
cin>>x1>>v1;
double t1;
t1=2*x1*1.0/v1;
double sum=0;
while(n--)
{
double l,r,v;
cin>>l>>r>>v;
sum+=(r-l)*1.0*v;
}
double vy;
vy=fabs(sum*1.0/x1);
double vx;
vx=sqrt(v1*v1-vy*vy);
double t;
t=x1*1.0/vx;
if(t>t1||vy>v1)
cout<<"Too hard"<<endl;
else
cout<<fixed<<setprecision(3)<<t<<endl;
return 0;
}