문제 링크
- http://icpc.me/2934
사용 알고리즘
- Fenwick Tree
시간복잡도
- O(NlgN)
풀이
Fenwick Tree with Range update Point query
[S, E]구간에 식물이 추가된다면 (S에 있는 가로 줄기의 개수 + E에 있는 가로 줄기의 개수)만큼 꽃이 피고, (S, E)구간에 가로 줄기가 생성됩니다.
(S, E)구간에 가로 줄기가 생성되는 것은 [S+1, E-1]구간에 1을 더하는 것으로 표현할 수 있습니다.
Fenwick Tree에서는 range update, point query를 쉽게 구현할 수 있습니다.
그러므로 꽃이 피는 개수는 query(s) + query(e)로 구해주고, 가로 줄기가 생성되는 것은 update(s, e, 1)처럼 구현해주면 됩니다.
전체 코드
1 |
|