topcoder SRM 623 DIV2 CatAndRat

OpenSoucre發表於2014-06-05

解決本題的一個關鍵點就是當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);
    }
};

 

相關文章