Дерево одномерный массив (шаблон)

1. Одноточечной модификации, интервал запроса

<. бит / STDC ++ H> #include
 #define повторно возвращать
 #define будет долго долго 
 #define lowbit (х) (х & (- х))
 #define вкл (I, L, г) для (INT I = L; г < = г; ++ я)
 с использованием  пространства имен STD; 
Шаблон <Ьурепате Т> инлайн аннулируются й (Т & х) 
{ 
    символ с; BOOL е = 0 ;
    в то время как ((с = GetChar ()) < ' 0 ' || с> ' 9 ' ) , если (с == ' - ' ) F = 1 ; 
    х = с ^ 48;
    в то время как ((с = GetChar ())> = ' 0 ' && с <= ' 9 ' ) х = х * 10 + (с ^ 48 );
    если (е) х = - х; 
} 

Const  INT maxn = 5000 ; 
LL н, м; 
LL с [maxn] [maxn]; 

рядный недействительными добавить (LL х, LL у, Л.Л. г) 
{ 
    для (LL я = х; г <= п; г + = lowbit (я))
     для (LL J = у; J <= т; J + = lowbit (J )) 
        с [I] [J] + = г; 
} 

Инлайн LL сумма (LL х, у LL) 
{ 
    LL Рез = 0;
    для (LL I = х; я; I- = lowbit (я))
     для (LL J = у; J; J- = lowbit (J)) 
    Рез + = C [I] [J]; 

    ре рес; 
} 


INT основных () 
{ 
    freopen ( " in.txt " , " г " , STDIN); 
    
    LL а, б, х, у, г, выбор; 
    
    й (п); й (м); 
    в то время как (~ (зсапЕ ( " % LLD " , & опт))) 
    { 
        если (неавтоматического == 1 ) 
        { 
            й (х), й (у), й (г); 
            добавить (х, у, г); 
        }
        остальное  
        { 
            й (а); й (б), й (х), й (у); 
            Е ( " % LLD \ п " , сумма (х, у) + сумма (a - 1 , b - 1 ) -сумма (х, b- 1 ) -сумма (а - 1 , у)); 
        }     
    } 
    Повторно 0 ; 
}

 

рекомендация

отwww.cnblogs.com/lsyyy/p/11425293.html