4994 bzoj:[Usaco2017 2月]なぜ牛が道路IIIフェンウィックツリーのソートを渡りました_

コード:

#include <ビット/ STDC ++ H> 
に#define setIO(S)freopenは(S ".IN"、 "R"、STDIN)
の#define 200001をMAXN 
名前空間stdを使用。
INT ARR [MAXN]、L [MAXN]、R [MAXN]、A [MAXN]、C [MAXN]。
INT CMP(INT A、INT B)
{ 
    戻りL [A] <L [B]。
} 
INT lowbit(INT T)
{ 
    戻りT&( - T)。
} 
ボイド更新(int型のx、int型デルタ)
{ 
    (X <MAXN)C [X] + =デルタ、X + = lowbit(x)が、一方、
} 
int型の照会(INT X)
{ 
    int型TMP = 0。
    一方、(X> 0)TMP + = C [x]は、x軸= lowbit(X)。
    TMPを返します。
} 
int型のmain(){ 
   // setIO( "入力")。
    N INT、M。
    scanf関数( "%d個"、&n)と、
    (; I <= M; ++ iは、1 = INT)のために
    { 
        scanf関数( "%のD"、&A); 
        IF(L [A])
            R [A] = I。
            L [A] = I。
    } 
    (i = 1をint型、iが<= N; I ++)のためにA [I] = iは、
    ソート(A + 1、A + 1 + N、CMP)。
    int型ANS = 0; 
    (I ++; iが<= N I = 1 INT)用
    { 
        [I] INT CUR = A。
        =クエリ(L [CUR]) -クエリ(R [CUR])。    
        ANS + = A。
        アップデート(L [CUR]、1)、更新(R [CUR] - 1)。
    } 
    のprintf( "%d個の\ n"、ANS)。
    0を返します。
}

  

おすすめ

転載: www.cnblogs.com/guangheli/p/10951609.html