思路:两个人都要选取最优的策略。
先求外层那个人的角速度,因为他的角速度是确定的,再求内层人的当角速度和外层人一样时的对应的圆的半径r1。外层圆的半径为d;
那么如果r1>=外围圆的半径,那么肯定能逃脱,因为在d内层人的角速度比外层人的快,所以最多能与外层人相距半个圆周。
如多r1<d时,在0-r1内层角速度快,所以和可在r1圆周过圆心和外层人相对,此时两人的夹角为180,那么此时内层人必须沿直线走到外层圆周上,因为如果不的话,因为角速度小于外层,所以外层的人可以缩小角间距,所以更容易被抓。最后只要判断当沿直线走的时间t1是否小于外层人走半圆的时间。小于就能逃。
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<string.h>
6 #include<string.h>
7 #include<math.h>
8 const double N=3.141592654;
9 typedef long long ll;
10 int a[100005];
11 using namespace std;
12 int main(void)
13 {
14 int n,i,j,k,p,q;
15 while(cin>>k>>p>>q)
16 {
17 double x1,x2,x3;
18 x2=1.0*q/k;
19 double r2=1.0*p/x2;//求与外层人相同角速度的同心圆半径。
20 if(r2<1.0*k)
21 {
22 double c=1.0*k-r2;
23 double t=c/p;//沿直线走的时间
24 double t2=N*k/q;//走半圆所用的时间
25 if(t<t2)
26 {
27 cout<<"Yes"<<endl;
28 }
29 else cout<<"No"<<endl;
30 }
31 else
32 {
33 cout<<"Yes"<<endl;
34 }
35 }
36 return 0;
37 }