[openlecture] 탑코더 SRM 튜토리얼

  • legend12
    legend12
    1. Registration SRM (Single Round Match) 에 참가하기 위해서는 대회가 시작하기 전 Competition Arena 에 접속하여 참가등록을 하여야 한다. 참가등록시간은 대회시작 3시간전부터 5분전까지 가능하며, 단일 SRM 의 최대인원 제한 1500명이 있으므로, 시간과 총인원에 유의하여 등록을 마쳐야 한다. Competition Arena 에 접속하기 위해서는 탑코더 Handle 이 필요한데 이는 웹사이트(http://www.topcoder.com/tc)에서 가입이 가능하며, 가입 후에는 화면 왼쪽 상단에 있는 "O(n)" 아이콘을 클릭하면 설치 및 접속이 가능하다. 한번 설치한 이후에는 시작프로그램에 등록하여 접속하는 방법도 가능하다. tc.JPG
    2. 파란색 박스로 표시되어 있는 부분이 Competition Arena 접속하는 아이콘 arena_main.PNG
    3. 아레나에 접속하여 SRM 에 등록하는 위치
    4. Divisions SRM에 등록을 하게 되면 개인의 성적에 따라서 2개의 Divisions 한쪽에 배정이 된다. Division 1 과 2 가 있는데, Division 1 이 상위 Division 이다. 개인은 매 SRM 성적에 따라서 Rating 이라는 자신의 현재 성적을 가늠할 수 있는 수치가 바뀌게 되는데, Rating 이 1200 미만이거나 처음 참가하는 사람들은 Division 2 에서 그 외의 사람들은 Division 1 에서 SRM 을 치루게 된다. Rating 에 대한 사항은 뒤에서 다시 자세하게 언급하도록 하겠다.
    5. Competition SRM 은 75분의 Coding Phase 와 5분의 Intermission, 15분의 Challenge Phase 그리고 그 이후의 System Test Phase 로 이루어진다. 일반적으로 대회가 시작하는 시간으로부터 2시간 정도면 최종결과를 볼 수 있다. 1) Coding Phase 75분간 주어지는 Easy, Medium, Hard 3문제를 풀어서 제출할 수 있는 시간이다. 각각의 문제는 250, 500, 1000 점을 기본으로 해당 SRM 의 난이도에 따라서 다소 점수의 변동이 있을 수 있다. 문제를 여는 시간으로부터 점수가 점점 감소하며, submit 을 한 시점의 점수가 반영된다. Coding Phase 내에는 한번 제출한 문제를 다시 제출할 수 있는데, 이때는 시간에 따른 감점에 10%의 추가 감점이 주어진다. 모든 문제에 대해서는 총점의 30% 에 해당하는 기본점수가 주어지기 때문에 늦게 제출하거나 여러번에 걸쳐 재제출하더라도 최소한의 점수는 보장된다. 2) Intermission Coding Phase 와 Challenge Phase 사이에 주어지는 5분의 휴식시간. 사실 휴식시간이라기 보다는 자신의 소스를 다시한번 검토하고 Challenge Phase 를 대비하기 위한 case 생성시간으로 사용된다고 보는 것이 더 좋을 것이다. 3) Challenge Phase 방에 있는 다른 사람들이 제출한 코드를 보고 반례 데이터를 입력하여 틀렸음을 15분간 증명하는 시간이다. 내가 만약 남의 반례 데이터를 넣어 틀린것을 찾아내는데 성공했다면 50점을 추가로 받으며, 실패했을 경우에는 25점을 감점으로 받는다. 이런 반례 데이터를 넣는 것을 Challenge 라고 한다. 이미 다른 사람이 반례를 찾는데 성공한 것에 대해서는 더이상 시도할 수 없으며, 자신의 점수가 음수일 때 또한 더이상 시도할 수 없다. 4) System Test Phase 제출된 해답들 중에서 Challenge Phase 에서 반례가 발견되지 않고 넘어온 모든 솔루션에 대해서 검증하는 시간이다. 이 채점은 기본적으로 출제자가 준비한 케이스들과 모든 방에서 Challenge 에 성공한 케이스들이 포함되어 채점을 한다. 이걸 통과하지 못하면 그 문제는 0점 처리되며, 통과한 문제들에 대해서만 점수가 부과된다. 이렇게 모든 대회가 끝나고 나면 System Test 까지 Pass 한 해답들에 대한 점수와 Challange Phase 에서 획득한(또는 잃은) 점수가 합산되어 최종 순위가 결정된다.
    6. Coding Rules 탑코더의 경우에는 ICPC 와는 다르게 전체 프로그램을 만들어 제출하는 것이 아니라, 주어지는 클래스의 함수 하나를 만들어서 제출하면 된다. 추가적인 다른 함수에 대한 제한은 없다. prob.PNG 위의 문제에서 보면 TristipteBacteria 라는 Class 안에 int 를 return 으로 하고 String[] 를 인자로 하는 howMany 라는 함수가 필수로 포함되어 있어야 한다는 것을 알 수 있다. ICPC 에서 하듯이 main 함수를 만들어서 넣고 Compile 을 할 경우 Error 가 발생하니 주의가 필요하다. arena.PNG 이제 코딩한 내용을 Coding Area 에 놓고 하단에 위치한 Compile 버튼을 누르면 컴파일을 할 수 있다. 팝업창을 통해 Error 위치 또는 컴파일 완료라는 메시지 창이 뜨게 되고, Test 버튼을 눌러서 프로그램을 검증해 볼 수 있다. 기본적으로 예제 데이터들은 입력되어 있으며, 직접 데이터를 입력하여 test 해 볼 수 있다. 이제 틀린것이 없다고 생각되면 가장 우측에 위치한 Submit 버튼을 눌러서 솔루션을 제출할 수 있다. 솔루션이 제출될때 UCR 에 관련된 경고창이 뜰 수 있으며, 제출이 확인되면 문제에 대한 현재 점수가 팝업창을 통해서 나타난다.
    7. UCR (Unused Code Rules) 제출된 코드 중 실제로 동작하지 않는 Code 가 30% 이상 포함되어 있을 경우를 말하며, 이 경우에는 획득한 점수의 20% 만이 부여된다. System test 후에 걸러지므로 실제 스탠딩에서는 확인할 수 없다. 좀 더 세부적인 사항은 링크(http://www.topcoder.com/tc?module=Static&d1=help&d2=ratedEvent#extracoderule)를 참조.
    8. Advanced Skills 많은 참가자들은 문제를 푸는데 소용되는 시간을 좀 더 줄이고, 좀 더 자신에게 편리한 방향으로 SRM 에 참가하기 위하여 나름의 노하우를 쌓아서 참가하고는 한다. 이런 것들을 반영하는 것이 Template code 와 Arena plug-in 이 되겠다. 1) Templates typedef 라 define 을 통해서 자신이 자주사용하는 명령어들을 짧게 재정의 하여 사용하거나, 문제에서 필요할 것이라고 예측되는 함수들을 미리 구현하여 놓고, 대회가 시작하면 붙여넣어 사용하는 코드들을 말한다. 이런 코드들은 전체적인 코딩시간을 줄여줄 뿐만 아니라 미리 검증을 통해 구현하기 때문에 디버그시에 디버그의 범위를 제한시켜 준다는 장점을 가진다. 하지만 문제에서 사용되지 않는 코드들을 붙여넣을 경우 UCR 에 걸릴 수 있기 때문에 조심해서 사용해야 한다. [code c++] #define pb push_back #define FOR(i, a, b) for(int i = (a); i < (b); ++i) typedef long long ll; typedef vector VI; int ccw(point pa, point pb, point pc) { return (pa.x - pb.x) * (pb.y - pc.y) - (pb.x - pc.x) * (pa.y - pb.y); } [/code]
    9. 많이 사용되는 template 의 형태 2) Plug-ins http://algospot.com/zbxe/openlecture/43356
    10. Rating & Volatility
      레이팅에 따라서 핸들의 색이 달라지게 된다.
      Gray : 0 - 899 / Green : 900 - 1199 / Blue : 1200 - 1499 / Yellow : 1500 - 2199 / Red : 2200+
      이 외에 레이팅이 3000+ 인 경우에는 타겟이라고 불리는 괴물 집단이 존재한다. 이 경우 핸들의 색이 변하지는 않으나 Arena 에서 핸들 앞에 나타나는 원의 형태가 다르다.
      target.PNG

      • 잘 알려져 있는 Target 둘이다. 레이팅은 매 SRM 이 끝나면 변하게 되는데 이는 영향이 받는 변수가 많으니 자세한 설명은 생략한다. 꼭 계산을 해보고 싶다면 http://www.topcoder.com/tc?module=Static&d1=help&d2=ratings 이 곳을 참고하면 된다. Volatility 는 자신의 변동성지수를 나타낸다. 수치가 클수록 레이팅의 변동폭이 크며, 작을수록 변동폭이 작다.
    11. Money Match
      SRM 중에 일부는 스폰서를 통해서 상금이 걸린 경우가 있다. 이를 Money Match 라고 하는데 일반적으로 총 상금은 $5,000 이며, Division 1 에서는 방 1~3등이 Division 2 에서는 방 1~2등이 상금을 받는다. 분배방식은 총 상금의 70% 가 Division 1 에 30% 가 Division 2 에 할당되며, 이 할당랼들은 방의 갯수에 따라 동일하게 방별로 상금이 나뉜다. Division 1 의 방 1등은 50% 를 2등은 30%, 3등은 20% 를 받으며, Division 2 의 방 1등은 할당량의 60%, 2등은 40% 를 받게 된다.

    12. Affidavit
      상금을 받기 위해서는 공증작업을 거쳐야 하는데, 이것은 공증서류를 준비하여 미국 대사관에 가면 수수료를 내고 받을 수 있다. 공증을 받기위해서는 Topcoder 가 미국기업임을 증명할 수 있어야 하므로 웹사이트에 있는 미국내 주소를 꼭 알아가도록 하자. 대사관에서 공증을 받은 후에는 이것을 탑코더에 국제우편을 보내면 끝.

      [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]

    16년 전
5개의 댓글이 있습니다.
  • JongMan
    JongMan

    오오 고돌 오오
    승리의고돌 승리의고돌 승리의고돌 승리의고돌~~~


    16년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    Topcoder 가 미국기업임을 증명할 수 있어야 하고, 대사관이 왜 공증업무를 처리해줘야 하는지에 대한 서류가 필요합니다. 저한테는 Topcoder에 메일을 보내서 왜 공증이 필요한 지에 대해 답장을 받아오라고 하더군요.


    16년 전 link
  • helloneo
    helloneo

    자신의 점수가 음수이면 챌린지 불가능한가요..? 마이너스몇백점도 본거같기도하고 아닌거같기도하고.. -_-;


    16년 전 link
  • Being
    Being

    음수이면 챌린지가 불가능합니다. 신나게 챌린지를 하다가 챌린지당하거나 System Test에서 실패하면 음수로 곤두박질 칠 수 있죠..-_-;


    16년 전 link
  • legend12
    legend12

    이건 저도 직접 가서 들은 얘기인데, 그 공증받을 서류에 보시면 Prize 를 수령한다는 내용이 적혀있을 것 입니다. 그걸 얘기하면 공증이 필요한 이유로 납득을 하더군요.


    16년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.