标签:
高中物理斜抛运动,简单分析一下角度固定下来则可以计算每个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=1;i<=n;i++) scanf("%lf",&v[i]); int lans=0; for(dd d=0;d<1;d+=1./360){ int ans=0,ok=1; dd s=sin(d*pi); dd c=cos(d*pi); for(int i=1;i<=n;i++){ dd vx=v[i]*s; dd vy=v[i]*c; dd t=(sqrt(2*h*g+vy*vy)-vy)/g; dd lnd=vx*t; if(lnd>=l2&&r2>=lnd){ok=0;break;} if(lnd>=l1&&r1>=lnd)ans++; } if(ok)lans=max(ans,lans); } printf("%d\n",lans); } }
标签:
原文地址:http://www.cnblogs.com/flipped/p/5739752.html