본문 바로가기

펜윅트리3

[백준] 2357번 - 최솟값과 최댓값 (파이썬) # 최솟값과 최댓값 import sys input = sys.stdin.readline MAX = sys.maxsize N, M = map(int, input().split()) arr = [0] for _ in range(N): arr.append(int(input())) tree = [[MAX, 0] for _ in range(N+1)] tree2 = [[MAX, 0] for _ in range(N+1)] def update(i, target): while i 0: tree2[i][0] = min(tree2[i][0], target) tree2[i][1] = max(tree2[i][1], target) i -= (i & -i) def find(start, end): result_min = MAX re.. 2022. 2. 13.
[백준] 10868번 - 최솟값 (파이썬) # 최솟값 import sys input = sys.stdin.readline MAX = sys.maxsize N, M = map(int, input().split()) arr = [0] for _ in range(N): arr.append(int(input())) def update(i, target): while i 0: update(i, x) update2(i, x) for _ in range(M): start, end = map(int, input().split()) print(find(start, end)) 자료구조, 펜윅트리 1. 입력을 받고 트리를 두 가지를 할당해준다. 2. 초기값을 이용해서 펜윅트리를 업데이트해준다. - update : 앞에서 뒤로 펜윅트리를 만든다. - update2 :.. 2022. 2. 13.
[백준] 2042번 - 구간 합 구하기 (파이썬) # 구간 합 구하기 import sys input = sys.stdin.readline N, M, K = map(int, input().split()) arr = [0] for _ in range(N): arr.append(int(input())) tree = [0] * (N+1) def update(i, diff): while i 0: result += tree[i] i -= (i & -i) return result def print_sum(start, end): print(fromOne_sum(end) - fromOne_sum(start-1)) for i, x in enumerate(arr): if i > 0: update(i, x) for _ in range(M+K): type, a, b = map.. 2022. 2. 12.