【HDU 4445】Crazy Tank(暴力)

时间:2023-03-09 07:25:42
【HDU 4445】Crazy Tank(暴力)

高中物理斜抛运动,简单分析一下角度固定下来则可以计算每个cannonball的降落坐标lnd。

因此暴力计算不同角度下的结果。

#include <cstdio>
#include "cmath"
#include "algorithm"
#define ll long long
#define dd double
#define N 205
#define g 9.8
#define eps 1e-6
const dd pi=acos(-1.0);
ll h,l1,l2,r1,r2,n;
dd v[N];
using namespace std;
int main(){
while(scanf("%d",&n),n){
scanf("%d%d%d%d%d",&h,&l1,&r1,&l2,&r2);
for(int i=;i<=n;i++)
scanf("%lf",&v[i]);
int lans=;
for(dd d=;d<;d+=./){
int ans=,ok=;
dd s=sin(d*pi);
dd c=cos(d*pi);
for(int i=;i<=n;i++){
dd vx=v[i]*s;
dd vy=v[i]*c;
dd t=(sqrt(*h*g+vy*vy)-vy)/g;
dd lnd=vx*t;
if(lnd>=l2&&r2>=lnd){ok=;break;}
if(lnd>=l1&&r1>=lnd)ans++;
}
if(ok)lans=max(ans,lans);
}
printf("%d\n",lans);
}
}