문제 링크
- http://icpc.me/15249
문제 출처
- 2017 CEOI Day2 1번
사용 알고리즘
- CHT
시간복잡도
- $O(N \log N)$
풀이
점화식을 세워봅시다.
$\displaystyle D_i = \min_{1 \leq j < i}(S_{i-1} - S_j + (H_i - H_j)^2 + D_j)$
$\displaystyle D_i = \min_{1 \leq j < i}(S_{i-1} - S_j + H_i^2 - 2H_iH_j + H_j^2 + D_j)$
$\displaystyle D_i = \min_{1 \leq j < i}(-2H_jH_i-S_j+H_j^2+D_j)+S_{i-1}+H_i^2$
min 안에 있는 식은 $H_i$에 대한 일차식입니다. 직선들이 여러 개 있을 때 최솟값은 Convex Hull Trick을 이용해 $O(\log N)$만에 구할 수 있습니다.
Convex Hull Trick에 직선을 $N$번 넣고 $N$번 쿼리를 날리므로 $O(N \log N)$이 걸립니다.
전체 코드
1 |
|