문제 링크
- http://icpc.me/10713
문제 출처
- 2015 JOI 1번
사용 알고리즘
- Segment Tree
- Lazy Propagation
시간복잡도
- O(n log n)
풀이
i번과 i+1번 도시를 잇는 철도를 i번 철도라고 부릅시다.
기본적인 아이디어는 i번 철도를 지나는 횟수를 k라고 했을 때, a[i] * k와 b[i] * k + c[i] 중 더 작은 값이 해당 철도의 총 이용료가 된다는 것입니다.
그러면 이동할 구간이 주어졌을 때, 해당 구간 안에 있는 모든 철도의 이용 횟수를 빠르게 업데이트할 방법만 찾으면 됩니다.
Segment Tree에서 Lazy Propagation을 사용하면 효율적으로 할 수 있습니다.
전체 코드
1 |
|