エリクセン画面+セグメントツリー--cf731F

ここで、高調波シリーズln2e5で順次マスタとして各2e5-1カード番号から列挙し、次にセグメント番号は、その複雑さの数よりも大きいシーク、すなわち複雑エッペンドルフふるい,,

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#defineは長い長いっ
 の#define N 200005
 int型のCNT [N]、N。

#define LSONのL、M、RT << 1つ
 の#define rsonのM + 1、R、RT << 1 | 1つ
のLL NUM [N << 2 ]。
ボイド更新(int型 POS、int型 V、INTを L、INT R、INT {RT)の
     場合(L == R){ 
        NUM [RT] + = V。
        返します
    } 
    INT M = 1 + rを>> 1 もし(POS <= m)の更新(POS、V、LSON)。
    他の更新(POS、V、rson)。
    NUM [RT] = NUM [RT << 1 ] + NUM [RT << 1 | 1 ]。
} 
LLクエリ(int型 L、INT R、int型の L、INT R、INT RT){
     場合(L <= 1 && R> = R){
         戻り[RT] NUM。
    } 
    INT M = 1 + rを>> 1 
    LLのRES = 0 もし(L <= M)RES + = クエリ(L、R、LSON)。
    もし(R> M)RES + = クエリ(L、R、rson)。
    リターンのres; 
} 

int型のmain(){ 
    CIN >> N。
    int型 i = 1 ; iが<= N iが++ ){
         int型のX; scanf関数(" %のD "、&x)は、
        CNT [X] ++ ; 
    } 
    
    LL ANS = 0 (LL I = 200000 ; I> = 1 ; i--)場合(CNT [I]){ 
        LLのTMP = 0 
        アップデート(I、CNT [i]は、12000001);
        (LLのJ = 1 ; iが<jは* = 200000 ; J ++ 
            TMP + =クエリ(jは* I、分(200000ll、(J + 1)* I- 1)、12000001)* iが* jは、
        ANS = MAX(ANS、TMP)。
    } 
    COUT << ANS << ENDL。
}

 

おすすめ

転載: www.cnblogs.com/zsben991126/p/11440213.html
おすすめ