BOJ 17526 Star Trek

BOJ 17526 Star Trek

문제 링크:

문제 내용

수직선 위에 nn개의 점이 있습니다 (3n100  0003 \le n \le 100\;000). 각각의 이웃한 점들 사이의 거리 n1n-1개가 주어집니다. (거리 dd의 범위: 1d10001 \le d \le 1000)

1번 점에서 nn번 점으로 이동하려고 하는데, 각 점에서 출발하는 교통 수단을 이용할 수 있습니다. 각 교통수단은 아무 때나 출발할 수 있지만, 각각 준비 시간과 이동 속도가 다릅니다. 이동 속도는 “거리 1을 이동하는 데 걸리는 시간"으로 주어집니다. 어떤 점에서 교통 수단을 갈아타는 데에는 주어진 준비 시간 이외의 추가 시간은 들지 않습니다. (준비 시간 pp의 범위: 0p1090 \le p \le 10^9, 속도 값 ss의 범위: 1s1051 \le s \le 10^5)

이때 1번 점에서 nn번 점으로 이동하는 데 걸리는 최소 시간을 구하세요.

문제 풀이

스포일러

먼저 DP를 생각해 보면, ii번째 점에 도달하는 최소 시간은 해당 xx좌표에서 여러 직선의 값 중 최솟값이고, ii번째 점에서 출발하는 직선이 추가되는 형식이 됩니다.

이때 추가되는 기울기가 단조적이지 않으므로, 단순 monotone stack은 쓰기 어렵고, Li-Chao tree를 써서 풀 수 있습니다.

그 외에 직선 루트 개 단위로 convex hull을 재구성하는 풀이, DP를 뒤에서부터 잘 정리하여 monotone stack을 사용 가능한 꼴로 정리하는 풀이 등이 있다고 합니다.

Last updated on