문제
풀이
$DP[d][i]$를 여행의 $d$번째 날에 $i$번째 지역에 도착하는 경로의 확률 중 가장 큰 것이라 정의합시다. $i$번째 공항에서 나가는 항공편의 개수의 합을 $T_i$라 하면 아래 점화식을 이용해 $DP$값을 모두 구할 수 있습니다.
\[DP[d + 1][j] = \max\left(DP[d][i] \times \frac{S_{ij}}{T_i}\right)\]확률의 로그값을 저장하여 덧셈과 뺄셈 연산만으로 확률을 구하도록 하거나 long double등의 정밀도가 높은 자료형을 사용해야 맞을 수 있습니다.
시간 제한이 빡빡하므로 로그를 사용하지 않는 풀이에서는 $S_{ij} \div T_i$를 미리 구해놓고 재사용해야 시간 초과를 피할 수 있습니다.
테스트 케이스마다 시간 복잡도는 $\mathcal{O}(KN^2)$입니다.
코드
1 | |