现在的位置: 首页 > 综合 > 正文

一道挺有意思的几何题-逃亡者游戏-HDU1593

2014年09月05日 ⁄ 综合 ⁄ 共 1467字 ⁄ 字号 评论关闭

find a way to escape

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1194    Accepted Submission(s): 425

Problem Description
一日,话说0068与***泛舟湖上。忽见岸边出现他的一大敌人elnil。0068当然不想落入elnil的魔爪,于是他就得想办法逃脱。
这个湖是一个很规则的圆形,半径为R。此时0068正好在圆心位置。小船在湖中的速度为 V1,0068和elnil在岸上的速度都为V2。也就是说,如果0068在刚上岸的时候没被抓到,则他可逃脱。在任意时刻,0068和elnil都可以朝任何方向移动,但是0068不能一直呆上船上(会饿死的),elnil不能下水(他不会游泳)。假设0068和elnil都非常聪明,总能做对自己最有利的事情,而且两个人的体力都是无限的。
请问,0068最终能不能逃脱elnil的魔爪?
Input
本题目包含多组测试。请处理到文件结束。
每组测试包含三个整数,R,V1,V2。
Output
对于每组数据,如果0068能够安全逃脱,输出Yes,否则输出No。
数据不会出现正好抓到的情况,所以你可不用太考虑临界点。
Sample Input
100 10 20 100 10 50
 
Sample Output
Yes No
Author
linle
Source
思路:
第一次看到这个题目的时候,最直观的方法就是从圆心直接往相反的方向逃跑,一提交,WA,果然没有这么简单,
但是,思路有一部分是对的,就是往相反的方面跑,但是,最理想的初始位置并不是圆点和圆上的某一点,应该还有更理
想的初始逃跑状态.这里有一点需要注意,就是逃跑者极力想达到理想逃跑初态,而追赶者极力阻止逃跑者达到这一
状态,所以,理想初态应该是无论追赶者如何阻止,逃跑者仍然可以达到的理想状态.最理想的逃跑初态如图:

图:两个同心圆具有相同的角速度,并且A,B,0处于同一直线上.
下面来解释为何这是最理想的状态:
为什么这是最理想的初态?
因为B离岸最近,而A离B的上岸点最远(红色线路)
还有没有比这个状态更好的初始态?
假定B此时移动,那么A的线速度就会比B大,则二者的距离会缩小.新状态不是最优.
为什么可以达到这个初态?
在内圆内部,B的角速度都会比A的角速度大,因此无论A如何移动,B都可以利用角速度的优势使得A,B,O同线并且
向外挪到这个最理想状态.
剩下的工作就很容易了,B使劲往对岸游,而A绕半圆弧使劲追,比较到达时间就可以判断了.
Run ID Submit Time Judge Status Pro.ID Exe.Time Exe.Memory Code Len. Language Author
9980311 2014-01-17 23:17:21 Accepted 1593 0MS 308K 298 B C++  

#include <iostream>
#include <math.h>
using namespace std;
const double pi = acos(-1.0);

int main()
{
	double r,r1,v1,v2,t1,t2;
	while(cin >> r >> v1 >> v2)
	{
		r1 = r/v2*v1;
		t1 = (r-r1)/v1;
		t2 = pi*r/v2;
		if (t1 < t2)
			puts("Yes");
		else
			puts("No");
	}
	return 0;
}

抱歉!评论已关闭.