문제 링크
- http://icpc.me/21607
사용 알고리즘
- 세그먼트 트리
- 스파스 테이블
풀이
$f\circ g = g\circ f$이므로 두 함수를 적용하는 순서는 신경쓰지 않아도 됩니다. 그러므로, 초기 상태에서 각 $A_i$에 $f$와 $g$를 몇 번 적용해야 하는지 빠르게 구할 수 있다면 Sparse Table을 이용해서 문제를 풀 수 있습니다.
함수를 적용하는 횟수만 구하면 되므로, 1/2번 쿼리는 각각 Segment Tree나 Fenwick Tree를 이용해 구간에 1을 더하는 연산이라고 생각할 수 있습니다. 3번 쿼리는 $A_x$에 $f$, $g$를 적용해야 하는 횟수를 구한 뒤, Sparse Table을 이용해 로그 시간에 결과를 구하면 됩니다.
전체 코드
1 |
|