hdu 4445

时间:2021-09-07 18:07:32

今天模拟了一场去年金华的现场赛;

我和小珺两人出了5个题,感觉还可以;

不过这次的题目确实比较简单;

这个题目感觉不错,不难,以前见过用这种方法的,但一直没写过;

这次写下练练手:

思路,将角度分成1000份,然后暴力;

代码:

 #include<cstdio>
#include<cmath>
#include<cstring>
#define du 0.003141593
#define g 9.8
#define eps 0.0000001
using namespace std; int ans,n;
double dan[],h,l1,r1,l2,r2; void go()
{
double alph,vx,vy,xx;
for(int j=;j<=;j++)
{
alph=(double)j*du;
int cnt=;
for(int i=;i<n;i++)
{
vx=dan[i]*sin(alph);
vy=dan[i]*cos(alph);
xx=((sqrt(vy*vy+2.0*g*h)-vy)/g)*vx;
if(xx>l2-eps&&xx<r2+eps){cnt=;break;}
if(xx>l1-eps&&xx<r1+eps)
cnt++;
}
if(ans<cnt)ans=cnt;
}
} int main()
{
while(scanf("%d",&n)&&n)
{
memset(dan,,sizeof dan);
ans=;
scanf("%lf",&h);
scanf("%lf%lf%lf%lf",&l1,&r1,&l2,&r2);
for(int i=;i<n;i++)
scanf("%lf",&dan[i]);
go();
printf("%d\n",ans);
}
return ;
}