解决本题的一个关键点就是当Cat进入时,此时Rat在哪个位置?
注意移动方向可以随时改变,由于是圆环,故离入口最远点的距离是pi*R,即圆的一半,
当cat进入时(cat的速度大于rat的速度,否则不可能追上)
如果rat移动的距离小于圆环的一半,即此时rat的位置为移动最远的位置
如果rat移动的距离大于圆环的一半,则可以在pi*R附近摇摆,当cat进入则刚好rat在pi*R即可
之后保持与rat相同的方向即可
#include <iostream> #include <algorithm> using namespace std; const double pi = acos(-1.0); class CatAndRat{ public: double getTime(int R, int T, int Vrat, int Vcat){ if(Vrat >= Vcat) return -1.0; else return min(pi*R,(double)Vrat*T)/(Vcat-Vrat); } };