링크: https://www.acmicpc.net/problem/33918
풀이
- 시각 t에 완성되는 스콘 맛의 최댓값은 시각 t-1의 값에 의존
- dp[t][k] : 시각 t, 온도 k일 때 스콘 맛의 최댓값이라 하자
- r = D/C 라고 가정했을 때, 아래 수식을 도출할 수 있음
시도 1
- 시각 0부터 N-1 까지 bottom-up으로 최댓값을 구하는 방식으로 시도
- 시간 복잡도 = O( N*M*r)
- D = M, C = 1 일 때, r = D/C = M 이므로 O(NM^2), 시간 초과
시도 2
- 각 시각과 온도에서 최적의 값을 구하기 위해서 N*M의 순회는 반드시 필요하다고 생각
- 우선순위 큐를 통해 O(1)로 각 단계의 최댓값을 얻도록 함
- r 만큼 건너뛰면서 확인을 하는 것이 번거롭다
r만큼 건너뛰면서 확인을 해야 하기 때문에 r로 나누었을 때 나머지가 동일한 값끼리 우선순위 큐에 넣어서 확인하면 되겠다.
위 예제를 통해 보면, 색깔이 같은 것끼리 우선순위 큐에 넣고 범위만 확인하면 된다.
1 |
|
코드
1 |
|