[editorial] SRM371 div2 후기 >_<

  • zizavino
    zizavino

    안녕하세요?
    SRM371 div2 ☆★승리의zizavino☆★ 입니다 >_<
    div2라도 우승하니 짜릿한 것이 감격스럽습니다 >_<
    잡설 그만하고 editorial..
    A. 250
    이 n명이 m명에게 일일이 한명씩 투표합니다.(# of votes = n times m) 투표는 알파벳을 주는데 a가 좋은거고 z가 나쁜겁니다.
    이 때 당선자 i는 누구냐 하면은..
    [다른 임의의 사람 j에 대해 (i를 j보다 좋게 평가한 사람) > (j를 i보다 좋게 평가한 사람)]
    인 사람입니다. 즉 1 on 1으로 매치시켰을 때 전부 이기는 사람이죠..
    그런 사람 없으면 없다고 하는 문제였습니다. 난이도는 그렇게 높진 않았지만..
    저는 [i와 j를 같게 평가한 경우]를 고려하지 않고 테스트 3개만 넣어보고 "WE ARE BUT MEN, SUBMIT!"하고 나서 4번째 테스트를 넣어보니 틀렸길래 =_= 고쳐서 리섭했습니다ㅠ
    제가 이문제만 챌을 5개 성공시켰는데 많은 사람들이
    SUM(vote[n][m] - 'a')을 기준으로 제일 큰 애를 당선시켰더군요.
    za
    bc
    bc
    로 챌해서 5개나 건졌-_-;;
    B. 500
    이 문제는 div1의 250? 300? 과 같다고 하더라구요.
    가로 길이 w와 세로 길이 l가 입력으로 주어집니다.
    이 때 (0, 0)부터 시작해서 (1, 0) 방향으로 가다가 벽에 부딪히면 (0, 1) 방향으로 가고.. 해서
    (1, 0) -> (0, 1) -> (-1, 0) -> (0, -1) 방향으로 갑니다.
    그 때 마지막 점을 구하는건데요
    예를 들면
    mlkji
    nwvih
    oxytg
    pqrsf
    abcde
    하면 마지막 점은 (2, 2)입니다. 이걸 내보내는 문제입니다.
    저는
    spoiler="더 보기..." <- (0, 0)
    (a, b) <- (w - 1, l - 1)
    while(x + 1 < a && y + 1 < b) {
    ++ x; ++ y; -- a; -- b;
    if(x == a || y == b) return (a, b)
    return (x, y + 1)
    [/spoiler]
    과 같이 했습니다. 증명은 해보셔요 >_<
    C. 1000
    땅의 높낮이가 있어서 비가 오면 높이가 같거나 작은 곳으로 흐릅니다.
    이 때 모든 곳에 비가 올 때 어느 곳에 하수도를 설치하면 모든 물을 뺄 수 있는지
    그 최소 하수도 수를 구하는게 문제입니다.
    저는
    [spoiler="더 보기..."]while(아직 안된데 있을 때) {
    안된 곳 중에서 제일 낮은 곳 (a,b)를 고른다
    그 곳에 설치하고 물 뺄 수 있는데 다 뺀다
    카운터 증가
    }
    출력 카운터
    [/spoiler]
    와 같이 했습니다.
    가장 낮은 곳에 설치하는건 당연한 그리디인거 같구요 >_<
    읽어주셔서 감사합니당
    코드는 복사를 못하네요 ㅠ

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

    16년 전
1개의 댓글이 있습니다.
  • astein
    astein

    topcoder 홈페이지에 가 보면 지러신의 소스가 다 있음. ㄷㄷㄷ


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