오랜만에 열린 SRM.. 또 망했다.. 연일 최저 rating을 갱신하고있다.. ㅠ_ㅠ 어쩌다 이지경이 됐는지..
이번매치의 경우 블챌이 rating하락의 주범이다.. 앞으로 블챌은 자제하고 안정적으로 가야겠다..
500점도 쉬운문제였는데 너무 안일하게 대처하다 틀렸다.. 흐미.. 확실히 맞았다고 생각했는데..
학교가 정전되는바람에 학교서버에서 코딩을 못하고 .net에서 코딩했는데.. 완전 어색.. -_-;
탑코더가 쉽지않다는것을 다시한번 느꼈다.. 방 12등 전체 436등..

사용자 삽입 이미지
ㅠ_ㅠ

사용자 삽입 이미지
흐미.. 1군은 커녕.. green도 버거워보이는군..

[250] HockeyFault

아이스하키 링크가 주어지고 선수들의 좌표가 주어진다.. 아이스링크안에 몇명의 선수가 있는지 세는 문제..

좌표가 가운데 정사각형에 포함되는지 세고.. 그렇지 않을경우 좌우의 반원에 포함되는지 계산한다..
쉬운문제..

      1 #include <iostream>
      2 #include <cstdio>
      3 #include <algorithm>
      4 #include <vector>
      5 #include <string>
      6 #include <cmath>
      7 using namespace std;
      8
      9 class HockeyFault {
     10 public:
     11
     12 int numPlayers(int width, int height, int x, int y, vector <int> px, vector <int> py)
     13 {
     14     int cnt, i;
     15     int n = px.size();
     16     double x1, y1;
     17     double temp1, temp2, r;
     18     cnt = 0;
     19     r = 0.5 * height;
     20     for (i = 0; i < n; i++) {
     21         x1 = (double)px[i];
     22         y1 = (double)py[i];
     23         if (x1 >= x && x1 <= x+width && y1 >= y && y1 <= y+height) {
     24             cnt++;
     25         }
     26         else {
     27             temp1 = sqrt((x-x1)*(x-x1)+(y+r-y1)*(y+r-y1));
     28             temp2 = sqrt((x+width-x1)*(x+width-x1)+(y+r-y1)*(y+r-y1));
     29             if (temp1 <= r || temp2 <= r)
     30                 cnt++;
     31         }
     32
     33     }
     34
     35     return cnt;
     36 }
     37
     38 };





[500] SyllableSorting

단어들이 들어오고.. 모음을 제외하고 재나열하여 정렬하기..

쉬운문제였는데.. 방심하다 틀렸다.. 조건에따라 정렬했을때 결과가 같으면 원래 소트하기전에 단어 마디를 비교했어야했는데 원래 문자열을 그냥 비교했다.. (그렇게하면 모든경우를 커버할줄 알았다.. 왜그랬지.. -_-) 흠.. 대충대충하는습관을 고쳐야겠다..

      1 #include <iostream>
      2 #include <cstdio>
      3 #include <algorithm>
      4 #include <vector>
      5 #include <string>
      6 using namespace std;
      7
      8 typedef struct _s {
      9     string ori;
     10     vector<string> o;
     11     vector<string> syl;
     12 } DATA;
     13
     14 DATA data[1000];
     15
     16 bool comp(const DATA& x, const DATA& y)
     17 {
     18     int i, k;
     19     char str1[100], str2[100];
     20     for (i = 0; i < x.syl.size(); i++) {
     21         if (y.syl.size() <= i) {
     22             return false;
     23         }
     24         strcpy(str1, x.syl[i].c_str());
     25         strcpy(str2, y.syl[i].c_str());
     26
     27         k = strcmp(str1, str2);
     28         if (k == 0)
     29             continue;
     30         if (k < 0)
     31             return true;
     32         return false;
     33     }
     34
     35     for (i = 0; i < x.o.size(); i++) {
     36         if (y.o.size() <= i) {
     37             return false;
     38         }
     39         strcpy(str1, x.o[i].c_str());
     40         strcpy(str2, y.o[i].c_str());
     41
     42         k = strcmp(str1, str2);
     43         if (k == 0)
     44             continue;
     45         if (k < 0)
     46             return true;
     47         return false;
     48     }
     49     strcpy(str1, x.ori.c_str());
     50     strcpy(str2, y.ori.c_str());
     51     k = strcmp(str1, str2);
     52     if (k < 0)
     53         return true;
     54     return false;
     55 }
     56
     57 int is_vow(char ch)
     58 {
     59     if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
     60         return 1;
     61     return 0;
     62 }
     63
     64 class SyllableSorting {
     65 public:
     66
     67     vector <string> sortWords(vector <string> words)
     68     {
     69         int i, j, k;
     70         int n, len;
     71         char buf[1000];
     72         char w[1000];
     73         vector<string> res;
     74
     75         n = words.size();
     76         for (i = 0; i < n; i++) {
     77             data[i].ori = words[i];
     78
     79             strcpy(buf, words[i].c_str());
     80             len = strlen(buf);
     81
     82             j = k = 0;
     83
     84             while (j < len) {
     85                 while (!is_vow(buf[j]) && j < len) {
     86                     w[k++] = buf[j];
     87                     j++;
     88                 }
     89                 while (is_vow(buf[j]) && j < len) {
     90                     w[k++] = buf[j];
     91                     j++;
     92                 }
     93
     94                 w[k] = 0;
     95                 k = 0;
     96                 //printf("w = %s\n", w);
     97                 data[i].syl.push_back(w);
     98                 data[i].o.push_back(w);
     99                 sort(data[i].syl.begin(), data[i].syl.end());
    100             }
    101
    102         }
    103
    104         sort(data, data+n, comp);
    105         for (i = 0; i < n; i++) {
    106             res.push_back(data[i].ori);
    107         }
    108         return res;
    109     }
    110
    111
    112 };






[1000] PlayerExtraction


to be updated..

 

'Problem Solving > TopCoder logs' 카테고리의 다른 글

TopCoder SRM381 DIV2 (완료)  (2) 2007.12.09
TopCoder SRM380 DIV2 (완료)  (0) 2007.12.08
TopCoder SRM 379 Div2 (완료)  (0) 2007.11.29
TopCoder SRM378 DIV2 (완료)  (0) 2007.11.21
TopCoder SRM375 DIV2 (Complete)  (6) 2007.11.11
TopCoder SRM 373 Div 2  (0) 2007.10.24
TopCoder SRM 372 Div 2  (8) 2007.10.18
TopCoder SRM 371 Div2 (완료)  (2) 2007.10.14
TopCoder SRM 370 Div2  (0) 2007.10.14
TopCoder SRM369 DIV2  (6) 2007.10.05

to Top