[Medium] TheProgrammingContestDivOne
Topcoder SRM 502 Div1
임의의 두 문제 i, j 를 둘 다 해결하기로 했다면, 어떤 문제를 더 먼저 해결하는게 좋은지를 알 수 있다.
상황을 설정해서 식을 열심히 풀어보면 나옴.
r[i] * p[j] < r[j] * p[i] 라면 i를 먼저 해결하는게 무조건 좋고, 반대라면 j를 먼저 해결하는게 무조건 좋다.
따라서 문제를 해결하는 '순서' 를 결정할 수 있고, 그 정렬 기준은 위의 식을 이용하면 된다.
이렇게 정렬한 순서를 놓고 앞에서부터 차례대로 해결하는게 최선일까? 그건 아니다.
어떤 문제를 skip하고 다음 문제를 푸는게 더 좋을 수 있기 때문이다.
답을 구하는건 DP로 : D[i][t] = 1~i 번 문제를 갖고 시간 t까지 지났을 때 얻을 수 있는 최대 점수