zoukankan      html  css  js  c++  java
  • 「HDU 2298」Toxophily

    题意:原题在这

    假设LCY站在(0,0)点,现给定平面直角坐标系内ZJ坐标,求ZJ与LCY的连线与X轴连线的角度
    取g=9.8m/s²

    做法:

    感谢Beef的运动学分析及奇怪的口音让我差点打不出来“θ”

    首先∵速度是斜方向的,所以Vx=V·cosθ,Vy=V·sinθ

    又∵Sx=Vx·t,Sy=Vy·t

    ∴X=Vcosθ·t,Y=Vsinθ·t

    到此为止理论分解完成了

    ------------------------------------------------------------------------------------------------

    然鹅,题目中说考虑重力加速度g=9.8m/s²

    所以Y=Vsinθ·t-(1/2)·gt²

    代换t=X/Vcosθ得

    最后得到二元一次方程:(g·X²)tan²θ-(2·V²·X)tanθ+(2·V²·Y+g·X²)=0

    ∴a=g·X²,b=-s2·V²·X,c=2·V²·Y+g·X²,Δ=b²-4ac

    ∴tanθ=(-b±√Δ)/2a

    解完之后判断θ是否合法

    代码:

    #include<iostream>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    #define pi acos(-1.0)//弧度制180°
    #define g 9.8
    #define maxx pi/2
    #define minn 0
    
    int T;
    double x,y,v;//X,Y是ZJ坐标,V是LCY的移动速度
    
    int main()
    {
        cin>>T;
        for(int cas=1;cas<=T;cas++)
        {
            cin>>x>>y>>v;
            double a=g*x*x , b=-2*v*v*x , c=2*v*v*y+g*x*x , dlta=b*b-4*a*c;
            if(dlta<0) printf("%d
    ",-1);  
            else
            {  
                double ans=atan( (-b-sqrt(dlta))/(2*a) );  
                printf("%.6lf
    ",ans);  
            }  
        }
        return 0;
    }

    朴素做法:

    double a=g*x*x , b=-2*v*v*x , c=2*v*v*y+g*x*x , dlta=b*b-4*a*c;
    double tan1=(-b+sqrt(dlta))/(2*a) , eta1=atan(tan1);  
    double tan2=(-b-sqrt(dlta))/(2*a) , eta2=atan(tan2);  
    if((eta1>=minn && eta1<=maxx) && (eta2>=minn && eta2<=maxx))  
         printf("%.6lf
    ",eta1<eta2?eta1:eta2);  
     else if(eta1>=minn && eta1<=maxx)  
         printf("%.6lf
    ",eta1);  
     else if(eta2>=minn && eta2<=maxx)  
         printf("%.6lf
    ",eta2);  
     else  
         printf("-1
    ");
  • 相关阅读:
    为IIS站点启用SSL加密
    SQL Server Analysis Service身份验证
    安装规划服务器(PPS 2007)
    用SQL Server Compact Edition创建移动应用程序 【转载】
    在Web Service中使用Windows验证的方式
    巧用Excel去除数据表中的重复行
    如何动态切换报表中的图表类型
    使用链接维度
    如何配置订阅以使用 Web 同步(RMO 编程)【转载】
    如何对数据进行合并及分组
  • 原文地址:https://www.cnblogs.com/LocaEtric/p/9275687.html
Copyright © 2011-2022 走看看