首页 > 代码库 > hdu 4445 Crazy Tank(枚举)
hdu 4445 Crazy Tank(枚举)
http://acm.hdu.edu.cn/showproblem.php?pid=4445
要求发射的炮弹在都不落在friendly tank区域的条件下落在enemy tank区域的最多数目。
直接暴力枚举角度。。
#include <stdio.h> #include <iostream> #include <map> #include <set> #include <bitset> #include <list> #include <stack> #include <vector> #include <math.h> #include <string.h> #include <queue> #include <string> #include <stdlib.h> #include <algorithm> //#define LL __int64 #define LL long long #define eps 1e-9 const double PI = acos(-1.0); const double g = 9.8; using namespace std; int n; double l1,r1,l2,r2,h; double v[210]; int solve(double a) { int cnt = 0; for(int i = 0; i < n; i++) { double Vy0 = v[i] * sin(a); double Vx0 = v[i] * cos(a); double Vy = sqrt(Vy0*Vy0 + 2*g*h); double t = (Vy - Vy0)/g; double s = t*Vx0; if(s >= l2 && s <= r2) return 0; if(s >= l1 && s <= r1) cnt++; } return cnt; } int main() { while(~scanf("%d",&n)&&n) { scanf("%lf %lf %lf %lf %lf",&h,&l1,&r1,&l2,&r2); for(int i = 0; i < n; i++) scanf("%lf",&v[i]); double add = PI/1000.0; int ans = 0; for(double i = -PI/2; i <= PI/2; i += add) { ans = max(ans,solve(i)); } printf("%d\n",ans); } return 0; }
hdu 4445 Crazy Tank(枚举)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。