【物理问题】URAL - 1939 First Seal

Problem Description

输入l, h, H, v, x, a分别对应,车长度,车高度,门高度,车的速度,门下落速度,车减速的时候减速度。一位船长抢了个马车想跑出门外,他想知道他是不是安全,门随时可能会下落。可能会碰到输出”Crash”,一定可以不碰到输出”Safe”

思路:没理解,后面问了学长,才理解的。觉得挺不错的一道题。当门下落的时候,在(H - h) / x 时间内,不减速走到的地方,记录车尾的位置。或者减速到0,走到的地方,记录车头的位置。如果车尾的位置大于车头的位置,就肯定安全。 因为这两种情况,车没有重叠的地方,所以门如果压第一种情况的任何位置,都可以选择减速。门如果压第二种情况的任何位置,都可以选择不减速。这样就一定安全。

#include<cstdio>
using namespace std;
int main()
{
    int l, h, H, v, x, a;
    while(~scanf("%d %d %d %d %d %d", &l, &h, &H, &v, &x, &a))
    {
        //不减速走的,车尾相对位置 v * (H- h) / x - l
        //减速走的, 车头相对位置 v * v / (2 * a)
        if(x * v * v < 2 * a * (v * (H - h) - x * l)) //车尾的相对位置大于车头的相对位置,就可以避免被压到,注意精度,所以这样把除法换成乘法
            printf("Safe\n");
        else printf("Crash\n");
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值