펜윅 나무 (1)

제목 설명

그는 컬럼의 수를 알고있는 경우, 다음과 같은 두 가지 작업을 수행해야합니다 :

  • 의 숫자 플러스  X

  • 각 섹션의 번호를 취득하고

입력 형식

첫 번째 라인은 두 양의 정수를 포함  N-, m은 각각 열 및 디지털 연산의 총 수의 수를 나타낸다.

두 번째 행은 포함  N 수가 정수가 상기 제 스페이스로 분리  I 번째 열의 번호를 나타내는  i 개의 항목 I의 초기 값.

다음  m의  선이 포함 된  3 개.  다음 정수,는 하나 개의 동작을 나타낸다 :

  • 1 x k 의미 : 제  X의 수는 플러스 X  K

  • 2 x y 의미 : 출력 간격  [X, Y]를  각 숫자 및

출력 형식

출력은 라인의 정수, 모든 작업이 포함되어  이 개 결과를.

에:

5 5
1 5 4 3 2
1 1 3
2 2 5
1 3 -1
1 4 2
2 4 1

밖:

(14)

(16)

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
INT 트리 [ 500,050 ];
INT의 N, m;
INT lowbit ( INT X) {
 복귀 , X - X; 
} 
공극 추가 ( INT의 X, INT K) 
{ 

     ( INT I = X; I <= N; I + = lowbit (I)) 
    { 
        트리 [I] + = K; 
    } 
} 
INT find1 ( INT X) 
{ 
    INT의 합 = 0 ;
    대한 ( INTX = I, I, I- = lowbit (I)) 
    { 
        합계 + = 트리 [I]; 
    } 

    리턴 합; 

} 

INT 의 main () { 
CIN >> >> N m 단계;
위한 ( INT 난 = 1 ; I <= N; I ++ ) 
{ 
    INT (X); 
    CIN >> X; 
    추가 (I, X); 

} 
에 대해 ( INT 나 = 1 ; I <= m; I ++ ) 
{ 
    INT의 t, X, Y; 
    CIN >> t >> >> X , Y;
    만약 (t == 1 ) 
        추가 (X, Y);
    다른 
        COUT << find1 (Y) -find1 (X- 1 ) << ENDL; 
} 
반환  0 ; 
}

 

 

 

추천

출처www.cnblogs.com/iloveysm/p/12369276.html