[物理题+枚举] hdu 4445 Crazy Tank

题意:

给你N个炮弹的发射速度,以及炮台高度H和L1,R1,L2,R2。

问任选发射角度。最多能有几个炮弹在不打入L2~R2的情况下打入L1~R1

注意:区间有可能重叠。

思路:

物理题,发现单纯的依据V去求X很困难。

这个时候想到暴力枚举角度。for(double i=0; i<=pi; i+=0.0007)

算出能到达的x。然后推断x,统计sum

发现以增长级0.0007弧度 刚刚好能过这道题

反正也是醉了~

代码:

#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#include"algorithm"
#include"iostream"
using namespace std;
double pi=acos(-1.0);
int main()
{
    int n;
    while(scanf("%d",&n),n)
    {
        int ans=0;
        double h,x1,y1,x2,y2;
        double v[222];
        scanf("%lf%lf%lf%lf%lf",&h,&x1,&y1,&x2,&y2);
        for(int i=0;i<n;i++) scanf("%lf",&v[i]);
        for(double i=0; i<=pi; i+=0.0007)
        {
            int sum=0,f=1;
            for(int j=0; j<n; j++)
            {
                double vx,vy;
                double a,b,c;
                double x,t;
                vx=sin(i)*v[j];
                vy=cos(i)*v[j];
                a=4.9;
                b=vy;
                c=-h;
                t=(-b+sqrt(b*b-4*a*c))/(2*a);
                x=vx*t;
                if(x>=x2 && x<=y2)
                {
                    f=0;
                    break;
                }
                if(x>=x1 && x<=y1) sum++;
            }
            if(f) ans=max(ans,sum);
        }
        printf("%d\n",ans);
    }
    return 0;
}
时间: 2024-10-13 17:25:36

[物理题+枚举] hdu 4445 Crazy Tank的相关文章

hdu 4445 Crazy Tank (暴力枚举)

Crazy Tank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4562    Accepted Submission(s): 902 Problem Description Crazy Tank was a famous game about ten years ago. Every child liked it. Time f

hdu 4445 Crazy Tank(物理过程枚举)

遇到物理题,千万不要一味的当成物理题去想着推出一个最终结果来,这样ACM竞赛成了物理比赛,出题人就没水平了...往往只需要基础的物理分析,然后还是用算法去解决问题.这题n小于等于200,一看就估计是暴力枚举能过.就枚举角度就行了. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include<string> 6 #include

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> #inclu

HDU 4445 Crazy Tank --枚举

题意: n个物体从高H处以相同角度抛下,有各自的初速度,下面[L1,R1]是敌方坦克的范围,[L2,R2]是友方坦克,问从某个角度抛出,在没有一个炮弹碰到友方坦克的情况下,最多的碰到敌方坦克的炮弹数. 解法: 枚举角度,将pi/2分成1000份,然后枚举,通过方程 v*sin(theta)*t - 1/2*g*t^2 = -H 解出t,然后 x = v*cos(theta)*t算出水平距离,直接统计即可. 代码: #include <iostream> #include <cstdio&

hdoj 4445 Crazy Tank 物理题/枚举角度1

Crazy TankTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5033    Accepted Submission(s): 1017 Problem DescriptionCrazy Tank was a famous game about ten years ago. Every child liked it. Time fli

HDOJ 4445 Crazy Tank

枚举角度 Crazy Tank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4305    Accepted Submission(s): 833 Problem Description Crazy Tank was a famous game about ten years ago. Every child liked it. T

HDU 4445 数学-抛物运动

                                                      D - Crazy Tank                                                 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description Crazy Tank was a famous game about ten years

hdu 5325 Crazy Bobo dfs

// hdu 5325 Crazy Bobo // // 题目大意: // // 给你一棵树,树上每一个节点都有一个权值w,选择尽可能多的节点, // 这些节点相互联通,而且依照权值升序排序之后得到节点编号, // 需相邻节点之间的随意节点都要大于较小的节点. // // 解题思路: // 对于每一对u,v,我们建一条这种边:权值小的像权值大的连一条边. // 这样,问题就转化为求以u最小的权值为根的子树上点集的最大值. // dfs就可以. // // // 感悟: // // 多校的一道题目

Bungee Jumping---hdu1155(物理题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1155 题目很长,但是很容易理解,就是人从高s的桥上跳下来,手拉着长为l的绳子末端,如果绳子太短那么人将在空中输出Stuck in the air. 如果人落地速度大于10的话就死了,输出Killed by the impact.否则是活的输出James Bond survives. 简单的物理题:假如说人能到地上那么是重力势能转化成动能,其中会有绳子做负功: ep=mgh: Wf=k*L*L/2;其