1. 程式人生 > 其它 >資料結構篇(1) ts實現棧的基本操作和解決相關問題

資料結構篇(1) ts實現棧的基本操作和解決相關問題

一維字首和:

for  ( int  i  =  1 ;  i  <=  n ;  i++ )
        sum [ i ]  =  sum [ i - 1 ]  + a [ i ] ;

 

一維區間查詢:

∑( a [  l  ] --> a [  r  ] )  =  sum [ r ]  -  sum [  l - 1 ] ;

 

二維字首和:

for  ( int  i  =  1 ;   i  <=  n ;  i++ )
        for  ( int  j  =  1 ;  j  <=  m ;  j++ )
            s [ i ][ j ]  
= s [ i - 1][ j ] + s [ i ][ j - 1 ] + a [ i ][ j ] - s[ i - 1 ][ j - 1 ] ;

 

二維區間查詢:

 以x1,y1為左上角,x2,y2為右下角的區間 

s [ x2 ][ y2 ] - s [ x1 - 1 ][ y2 ] - s [ x2 ][ y1 - 1 ] + s [ x1 - 1 ][  y1 - 1 ] ; 

 

一維差分:

 for  ( int  i  =  1 ;  i  <=  n ;  i++ )
        c [ i ]  =  a [ i ] - a [ i - 1 ] ;

 

一維區間操作:

區間(l,r)同增 x : c [ l ]  +=  x ;   c [ r + 1 ]    −=  x ; 

 

二維差分:

 for  ( int  i  =  1 ;  i  <=  n ;  i++ )
        for  ( int  j  =  1 ;  j  <=  m ;  j++ )
            c [ i ][ j ]  =  a [ i ][ j ] − a [ i−1 ][ j ] − a[ i ][ j−1 ]  +  a [ i−1 ][ j−1 ] ;

相當於二維區間查詢時單位 s [ i ][ j ] 的值。

 

二維區間操作:

    c [ x1 ][ y1 ]  +=  x ;
    c [ x2 + 1 ][ y1 ]  −= x ;
    c [ x1 ][ y2 + 1 ]  −= x ;
    c [ x2 + 1 ][ y2 + 1 ]  −= x ;