您的位置:首页 > 其它

【物理问题】URAL - 1939 First Seal

2017-06-17 10:04 183 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: