세그먼트 트리를 사용하여 의 하위 배열의 합계를 찾을 수 있음을 이해합니다 . 그리고 이것은 here 자습서에 따라 시간 내에 수행 할 수 있습니다 .
그러나 쿼리 시간이 실제로 임을 증명할 수 없습니다 . 이 링크 (및 다른 많은 것)는 각 수준에서 처리 된 최대 노드 수가 이므로 임을 증명할 수 있다고 말합니다 .
그러나 아마도 모순으로 어떻게 이것을 증명할 수 있습니까?
그렇다면 더 높은 차원의 배열의 합에 세그먼트 트리를 사용한다면 증거는 어떻게 확장됩니까?
예를 들어, 원래 행렬을 사분면 세그먼트 트리를 작성하는 4 개의 사분면 (선형 배열의 절반 간격과 유사)으로 나눠서 하위 행렬 합계를 찾는 것을 생각할 수 있지만 그 증거는 나를 피할 수 없습니다.
세그먼트 트리 작성은 O (n)이고 쿼리는 O (log n)이고 업데이트는 O (log N)입니다. 합계 배열에 대한 이점은 업데이트 복잡성에 있습니다.
—
Nurlan