欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Straight Shot

程序员文章站 2022-04-27 13:18:07
...

SDUT 2019 Autumn Team Contest 20th

Straight Shot

Straight Shot 

Straight Shot 

解题关键:运动分解

解题易错:第一遍写错了,因为不知道求出来的值是否符合题意,所以可能造成求出来的正余弦值不符合+-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;
}