문제 링크
- http://icpc.me/13519
사용 알고리즘
- HLD
- 세그 레이지
시간복잡도
- $O(Q log^2 N)$
풀이
세그먼트 트리의 각 노드에서 구간의 왼쪽을 포함하는 최댓값, 구간의 오른쪽을 포함하는 최댓값, 구간의 최댓값, 구간의 합
을 저장하고 있으면 구간의 최대 연속합을 구해줄 수 있습니다.
이 세그먼트 트리에 lazy Propagation을 얹어주고 hld를 돌려주면 문제를 풀 수 있습니다.
hld를 이용해 답을 구할 때, 각 체인의 답들을 합치는 부분을 구현하는 것이 많이 까다로울 수 있습니다. 그림을 그려가면서 구현 설계하는 것을 추천합니다.
전체 코드
1 |
|