子供及びシーケンス(モジュロセグメントツリー)

見つけるためにシングルポイント更新間隔、セグメントツリーモジュロ演算、二つの配列、最大電流メンテナンス間隔を維持するために、現在の間隔を維持し、最大値がMOD未満であれば、モジュロダウンがもはや存在し:問題の意味通常の操作〜;;;

書式#include <iostreamの> 
の#include <cstdioを> 
する#include <CStringの> 
の#include < 文字列 >
 使用して 名前空間はstdを、
const  int型 MAXN = 1E5 + 10 const  int型 INF = 0x3f3f3f3f 
typedefの長い 長いLL。
LL [MAXN]、ツリー[MAXN * 4 ]、怠惰[MAXN * 4 ]。
LL maxtree [MAXN * 4 ]。
ボイドビルド(int型 L、int型の R、INT 今){
     もし(L == R){ 
        ツリー[今] = maxtree [今]は= [L]を、
        返します
    } 
    INT半ば=(L + R)>> 1 
    構築(今リットル、ミッド、 << 1 )。
    構築(ミッド + 1今、R、<< 1 | 1 ); 
    ツリー[今]ツリー[今すぐ<< = 1 ] +ツリー[今すぐ<< 1 | 1 ]。
    maxtree [今] = MAX(maxtree [今<< 1 ]、maxtree [今<< 1 | 1 ])。
} 
ボイド O3(int型 L、INTR、int型、今のint K、LL秒){
     場合(L == R){ 
        ツリー[今] =のS。
        maxtree [今] =のS。
        返します
    } 
    INT半ば=(L + R)>> 1 もし(MID> = K)O 3(L、中間、今<< 1 、K、S)。
    他の O3(ミッド+ 1、R、今や<< 1 | 1 、K、S); 
    ツリー[今]ツリー[今すぐ<< = 1 ] +ツリー[今すぐ<< 1 | 1 ]。
    maxtree [今] = MAX(maxtree [今<< 1]、maxtree [今すぐ<< 1 | 1 ])。
} 
ボイド O2(int型 L、int型の R、int型今、int型の L、int型の R、int型の){
     場合(S> maxtree [今])を返しますもし(L == R){ 
        ツリー[今]%の=のS。
        maxtree [今]%の=のS。
        返します
    } 
    INT半ば=(L + R)>> 1 もし(MID> = L)O 2(L、中間、今<< 1 、L、R、S)。
    もし(ミッド<R)O2(ミッド+1今、R、<< 1 | 1 、L、R、S)。
    ツリー[今]ツリー[今すぐ<< = 1 ] +ツリー[今すぐ<< 1 | 1 ]。
    maxtree [今] = MAX(maxtree [今<< 1 ]、maxtree [今<< 1 | 1 ])。
} 
LL O1(int型 L、int型の rは、int型、今のint L、int型R){
     場合(L> = L && R <= R){
         戻りツリー[今]。
    } 
    INT半ば=(L + R)>> 1 
    LL和 = 0;
    もし(L <= MID)の和+ = O1(L、中間、今<< 1 、L、R)。
    もし(R> MID)合計+ = O1(MID + 1、R、今<< 1 | 1 、L、R)。
    戻り値の合計。
} 
int型のmain(){ 
    IOS :: sync_with_stdio()。
    INTのN、M。
    CIN >> N >> M。
    以下のためにint型 i = 1 ; iが= <N; iは++)CIN >> [I]。
    (ビルド1、nは、1 )。
    一方、(M-- ){
         int型のLL C; OP、X、Y、
        CIN>> オペアンプ;
        もし(OPの== 1 ){ 
            CIN >> X >> Y。
            COUT << O1(1、nは、1、X、Y)<< ENDL。
        } 
        そう であれば(OP == 2 ){ 
            CIN >> X >> Y >> C。
            O2(1、nは、1 、X、Y、C)。
        } 
        { 
            CIN >> X >> C。
            O3(1、nは、1 、X、C)。
        } 
    } 



    戻り 0 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/lin1874/p/11286643.html