나무 블록 배열 작업의 최적화.
$의 O (1) $ 단일 지점을 수정 $ O (\의 SQRT {N}) $ 쿼리 간격.
CONST INT의 1E6 + N = 10, S = 400; INT S1 [N], S2 [N]; 공극 부가 INT (X, INT의 V) { S1 [X] = V +; S2의 [X / S] + = V; } INT QRY INT (X) { INT ANS = 0; 위한은 (i = X / S *에서의 S를 나타내는 int 난의 X를 = <; I ++) ANS = S1 + [I]; 대해 INT (X = I / S-1, I> = 0; --i) ANS + S2 = [I]; ANS를 반환; }
$의 O (1) $ 쿼리는 $ O (\의 SQRT {N}) 간격 변형 달러.
공극 부가 INT (X, V를 INT) { 위해 (나는 = X / S *에서의 S를 나타내는 int 난의 X를 = <; I ++) S1 [내가] + = V; S2를 [내가] + = v 및 (; 나는> = 0 --i 난 = X / S-1 INT); } INT QRY INT (X) { 리턴 S1 [X] + S2의 [X / S]; }