문제 링크
- http://icpc.me/19672
사용 알고리즘
- Aliens Trick
시간복잡도
- $O(N \log X)$
풀이
구간을 하나 더 선택할 때마다 얻는 이득이 점점 감소한다는 것($K$에 대한 정답이 볼록하다는 것)은 직관적으로 알 수 있습니다. 그러므로 Aliens Trick을 생각해볼 수 있습니다. $K$ 조건을 없애고, 구간을 한 개 선택할 때마다 $c$만큼 패널티가 감소하는 문제를 풀어봅시다.
$D(i, 0)$을 $1\cdots i$번째 원소만 고려했을 때, $i$번째 원소는 선택한 구간에 포함하지 않은 최댓값, $D(i, 1)$는 $i$번째 원소를 포함한 최댓값이라고 정의합시다. 상태 전이는 다음과 같습니다.
- $D(i, 0) \leftarrow \max\lbrace D(i-1, 0), D(i-1, 1) \rbrace$
- $D(i, 1) \leftarrow \max\lbrace D(i-1, 0) + A_i - c, D(i-1, 1) + A_i \rbrace$
크기가 0인 구간도 선택할 수 있으므로, 최댓값이 같다면 선택한 구간의 개수는 가장 작은 값을 저장하면 됩니다.
전체 코드
1 |
|