어제 밤 12시에 열린 매치..
오랜만에 최악의 퍼포먼스를 보이며 방 최하위 디비젼 630위를 달성하는 기염을 토했다.. -_-
덕분에 rating 이 무려 160점 하락.. 다시 블루로 복귀했다.. ㅠ_ㅠ;;
다시 옐로로 올라가려면 75점이나 올려야하는데.. 당분간은 좀 힘들것같다..
아.. SRM 문제가 갈수록 어려워지는거가터..~~


사용자 삽입 이미지

사용자 삽입 이미지


Level1 - TheNewHouseDivOne
2차원 좌표계에서 n 개의 점이 이미 있고.. 한개의 점을 더 찍을때 이미 있는 점들과의 거리들중에서 k번째로 짧은 거리를 최소화 하기..

흠.. 생각보다 쉽지않은 문제였다..
나같은경우 임의의 두 점 중간에 놓을때 답이 나올거라고 생각했는데.. 잘못된 가정이었다..
이걸 어떻게 푸나.. 했는데 나중에 남의 코드를 보고 좀 어의가 없었다는.. -_-

scale을 0.5 로 해서 임의의 모든점을 다 체크해보면 된다..
근데 왜 하필 0.5 까지만 하면 될까..? 왜 더 촘촘하게 체크할 필요가 없을까..? 여전히 아리송..

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <string>
  6 #include <cmath>
  7 using namespace std;
  8 #define min(x, y) ((x) > (y) ? (y) : (x))
  9 //#define max(x, y) ((x) > (y) ? (x) : (y))
 10 #define INF 999999999.0
 11
 12 class TheNewHouseDivOne {
 13 public:
 14
 15 double distance(vector <int> x, vector <int> y, int k)
 16 {
 17     int n;
 18     int i, j, l;
 19     double v, w;
 20     double sum, min1;
 21     n = x.size();
 22     min1 = INF;
 23     for (v = -50.0; v <= 50.0; v += 0.5) {
 24     for (w = -50.0; w <= 50.0; w += 0.5) {
 25         vector<double> vt;
 26         for (i = 0; i < n; i++) {
 27             sum = fabs(x[i]-v) + fabs(y[i]-w);
 28             vt.push_back(sum);
 29         }
 30         sort(vt.begin(), vt.end());
 31         min1 = min(vt[k-1], min1);
 32     }
 33     }
 34 printf("min1 = %lf\n", min1);
 35     return min1;
 36 }
 37
 38 };



Level2 - TheLockDivOne



to be updated..



Level3 - TheEncryptionDivOne



to be updated..

Leave a Comment


to Top