cafelier のSRM参加記録です。コンテスト中に考えてたことを執拗に全部書き残すとどうなるだろうかという試み本番中にこういうコードが書きたかったなあ、という後で書いた反省コードを書き残す試み
スパムが来たのでしばらくコメント欄をはてなユーザ限定にしています、すみません、
あとで | |
class TheChroniclesOfAmber { public: double minimumTime(vector <int> princeX, vector <int> princeY, vector <int> destinationX, vector <int> destinationY) { int N = princeX.size(); // d[s][g] := the distance from prince[s] to dest[g] vector< vector<double> > d(N, vector<double>(N)); for(int s=0; s<N; ++s) for(int g=0; g<N; ++g) d[s][g] = hypot(princeX[s]-destinationX[g], princeY[s]-destinationY[g]); // no teleportation double noTelepo = 0; for(int i=0; i<N; ++i) noTelepo = max(noTelepo, d[i][i]); // with teleportation: at least one position must be empty double answer = noTelepo; for(int unused_s=0; unused_s<N; ++unused_s) { double withTelepo = 0; for(int g=0; g<N; ++g) { // for each goal double t = 1e+300; for(int s=0; s<N; ++s) if( s != unused_s ) t = min(t, d[s][g]); // find the nearest starting point withTelepo = max(withTelepo, t); } answer = min(answer, withTelepo); // take the minimum } return answer; } };
presented by cafelier/k.inaba under