Crazy Tank

来源:互联网 发布:音频分析软件 编辑:程序博客网 时间:2024/06/05 17:01

枚举最小精度为单位的角度

#include<cstdio>

#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
double v[210];
#define pi 4*atan(1)
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF&&n)
    {
        double h,l1,r1,l2,r2;
        scanf("%lf%lf%lf%lf%lf",&h,&l1,&r1,&l2,&r2);
        for(int i=1;i<=n;i++)
        {
            scanf("%lf",&v[i]);
        }
        int num=0;
        int res=0;
        double i;
        for(i=-pi/2.0;i<=pi/2.0;i+=pi/(2.0*10000))
        {
            num=0;
            for(int j=1;j<=n;j++)
            {
                double vx=v[j]*cos(i);
                double vy=v[j]*sin(i);
                double vy2=sqrt(vy*vy+2*9.8*h);
                double t=(vy2-vy)/9.8;
                double x=vx*t;
                if(x>=l2&&x<=r2){
                    num=0;
                    break;
                }
                if(x>=l1&&x<=r1){
                    num++;
                }
            }
            res=max(res,num);
        }
        printf("%d\n",res);
    }
}
0 0
原创粉丝点击