Div2 Easyよりこっちの方が簡単…。
http://community.topcoder.com/stat?c=problem_statement&pm=12932
問題
半径Rの円形のチューブがある。
ある時刻にチューブのある点にネズミを入れる。このネズミは速度Vratで移動する。
時刻T後、同じ点より猫を入れる。このネズミは速度Vcatで移動する。
ネズミと猫は互いの位置を認識している。
ネズミは猫から逃げ、猫はネズミを追おうとするとき、猫がチューブに入った後、ネズミに追いつくまでの時間を求めよ。
解法
ネズミの方が移動が速いなら、永遠にネズミは逃げられる。
それ以外の場合、ネズミは最初の時間Tで出来るだけ遠くに逃げようと、最長でmin(T*Vrat, π*R)だけ逃げることができる。
後はこの距離をVcat-Vtatの速度差で埋めるまでの時間を求めればよい。
class CatAndRat { public: double getTime(int R, int T, int Vrat, int Vcat) { double dist; if(Vrat>=Vcat) return -1; dist=min((double)T*Vrat,R*atan(1)*4); return dist/(Vcat-Vrat); } }
まとめ
うーん、Easyの方が手間取った…。