龙龙跳跳跳

389 篇文章 1 订阅
8 篇文章 0 订阅

龙龙跳跳跳
Case Time Limit: 100 MS (Others) / 200 MS (Java) Case Memory Limit: 256 MB (Others) / 512 MB (Java)
Accepted: 155 Total Submission: 2223
查看我的提交显示标签
Problem Description
当电脑没有网络时,打开Chrome浏览器会发现一个恐龙小游戏:

按空格之后就可以开始玩:

你的任务是操纵一只呆萌的小恐龙来穿越沙漠。每次你按一下空格,小恐龙就会跳一下,形成一个完美的倒抛物线,并且每次跳跃的纵向距离和横向距离都是一样的。但是在沙漠中会有很多仙人掌,天上还会飞一些翼龙,你需要让你的小恐龙通过跳跃来避开这些仙人掌和翼龙,这就是整个游戏过程。

为了问题的简化,我们假设这是一个二维直角坐标系,恐龙在X轴上从左往右匀速运动。当恐龙从起跳点a处跳跃时,它将会跳出一个完美的倒抛物线,并且落地点与起跳点的距离为x,其跳起后的纵向最大高度为y。仙人掌为一根垂直于X轴的线段,且底部在X轴上,横坐标为b,高度为h,如下图所示。为了简便,本题不考虑恐龙的体型,不考虑仙人掌的宽度,也不考虑天上飞的翼龙。

现在给出小恐龙的起跳横坐标a、横向跳跃距离x、纵向跳跃高度y、仙人掌根部横坐标b、仙人掌高度h,问在此次跳跃中龙龙是否能顺利避开仙人掌。假设刚好擦到也算碰到。

Input
每个输入文件一组数据。
每组数据给出五个小数点后最多一位的浮点数a、x、y、b、h(-100 <= a <= 100, 0 < x <= 100, 0 < y < 100, -100 <= b <= 100, 0 < h <= 100),用空格隔开。
Output
如果在此次跳跃中龙龙能顺利避开仙人掌,那么输出YES,否则输出NO。
Sample Input 1
-1 2 2 0 1
Sample Output 1
YES
Sample Input 2
-1 2 2 0 3
Sample Output 2
NO
Author
Shoutmon
Source
18浙大考研机试模拟赛

#define _CRT_SECURE_NO_WARNINGS
#include <algorithm>
#include <iostream>
#include <cmath>

using namespace std;
#define eps 1e-8
#define More(a,b) (((a) - (b)) > (eps))
#define Less(a,b) (((a) - (b)) < (-eps))

int main() {
#ifdef _DEBUG
    freopen("data.txt", "r+", stdin);
#endif // _DEBUG
    std::ios::sync_with_stdio(false);

    double a, x, y, b, h;
    double k, c;
    cin >> a >> x >> y >> b >> h;

    if (Less(b, a) || More(b, a + x))
    {
        cout << "YES";
        return 0;
    }

    k = -4 * y / (x * x);
    c = y;

    double e = k * pow((b - (a + x / 2)), 2) + c;

    if (More(e,h)) cout << "YES";
    else cout << "NO";

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值