Problem Solving/Topcoder

[Topcoder] SRM421 DIV2

끄적끄적 2008. 10. 9. 09:53
오늘 새벽 0시에 있었던 매치였다.

250 easy문제는 평이한 문제였다.

500 mid문제가 중력개념이 나왔는데, 두 점만 주어질때는 구하겠는데, 3점이상 넘어갈 때를 어떻게 처리할지가 막막했다.. 이차방정식을 이리저리 변환해봐도 x를 구하기는 어려웠다. 나중에 푼 사람들 보니, 두 점을 반씩 나누면서, 점점 해로 좁혀나가는 방식으로 풀었더라.. 이런 비슷한 문제를 접해보지 못한 나로서는 참 막막했던 문제..

1000 hard문제는 의외로 쉬워보였으나.. 시간이 얼마 안남아서, 못풀었다. 나중에 시간나면 찬찬히 한번 풀어봐야 겠다.

Challenge Time에서는 500문제를 마감 1분전에 제출하는 사람이 있길래, 입력값을 좀 복잡하게 넣어봤다. 역시나 성공..ㅡㅡㅋ
그러나, 한번 성공한걸 탄력받아 다른 사람들 소스 중에 좀 지저분한 사람들 챌을 해봤으나 3번 실패;;

역시..challenge는 확실한거만 해야겠다는 교훈을 얻었다.


250문제.
class GymTraining
{
public:
   
    int trainingTime(int n, int m1, int m2, int t, int r)
    {
        int ret =0;
        int cur = m1;
        if( m2 - m1 < t) return -1;
        while(1)
        {
            ret++;
            if(cur + t <= m2)
            {
                n--;
                cur += t;
            }
            else
            {
                cur -= r;
                if( cur < m1) cur = m1;
            }
            if(n == 0) return ret;

        }
        return ret;
    }
};
반응형