사용자 도구

사이트 도구


ps:problems:boj:12837

가계부 (Hard)

ps
링크acmicpc.net/…
출처BOJ
문제 번호12837
문제명가계부 (Hard)
레벨골드 1
분류

구간 쿼리

시간복잡도O(n+mlogn)
인풋사이즈n<=10^6, m<=10^5
사용한 언어Python
제출기록54840KB / 652ms
최고기록572ms
해결날짜2022/06/28
태그

[라이]세그먼트 트리

풀이

  • 그냥 전형적인 구간합 쿼리 + 포인트 업데이트 쿼리 문제. 펜윅트리를 이용해서 풀면 된다
  • 트리를 만드는데에 O(n), 각 쿼리를 처리하는 데에 O(logn), 그래서 전체 O(n + mlogn)에 해결 가능하다.

코드

"""Solution code for "BOJ 12837. 가계부 (Hard)".

- Problem link: https://www.acmicpc.net/problem/12837
- Solution link: http://www.teferi.net/ps/problems/boj/12837

Tags: [Fenwick tree]
"""

import sys
from teflib import fenwicktree


def main():
    N, Q = [int(x) for x in sys.stdin.readline().split()]
    fenwick = fenwicktree.FenwickTree(N)
    for _ in range(Q):
        oper, *args = [int(x) for x in sys.stdin.readline().split()]
        if oper == 1:
            p, x = args
            fenwick.update(p - 1, x)
        else:
            p, q = args
            print(fenwick.query(p - 1, q))


if __name__ == '__main__':
    main()

토론

댓글을 입력하세요:
S C M V M
 
ps/problems/boj/12837.txt · 마지막으로 수정됨: 2022/07/08 01:57 저자 teferi