문제 링크
- https://icpc.me/26647
사용 알고리즘
- Aliens Trick
- DP
시간복잡도
- $O(N \log N \log X)$
풀이
$D(k, n)$을 $k$개의 와이어를 사용해 $n$번째 산까지 연결하는 최소 비용이라고 정의합시다. $D(k, n) = \min_{1 \leq i < n} \left{ D(k-1, i) + C(i, n) \right}$ 형태로 나타낼 수 있고, $C(i, n) = (X_n-X_i)^2 + (Y_n-Y_i)^2$는 monge matrix이므로 aliens trick을 사용할 수 있습니다.
와이어를 하나 추가할 때마다 $\lambda$ 만큼의 추가 비용이 발생하는 상황에서, $n$번째 산까지 연결하는 최소 비용을 $D_\lambda(n)$이라고 정의합시다. $D(n) = \min_{1 \leq i < n}\left{ D(i) + C(i, n) + \lambda \right}$ 꼴로 나타낼 수 있고, $C(i, n) + \lambda$는 monge matrix이므로 monotone queue optimization을 사용할 수 있습니다.
따라서 전체 문제를 $O(N \log N \log X)$에 해결할 수 있습니다.
전체 코드
1 |
|