uva1428フェンウィックツリー

各ポイント未満ポイント数とI、左右の統計とフェンウィックツリー[i]は、乗算と加算の原則の原則と、その後の回答

#pragma GCCの最適化(2)
の#include <ビット/ STDC ++ H>
 に#defineっ長い長
 の#define LS(I)I << 1個
 の#define RS(I)I << 1 | 1
 使用して 名前空間STDを、
CONSTの INT N = 1E5 + 10 
LLビット[N]、LX [N]、RX [N]、[N]。
int型 lowbit(int型x)は、
{
    返すのx&( - x)は、
}
無効アドオン(int型のx、int型のval)
{
    一方、(X < N)
    {
        ビット[X] + = ヴァル。
        X + = lowbit(X)。
    }
}
LLクエリ(int型x)は、
{
    LL ANS = 0 一方、(X> 0 
    {
        ANS + = ビット[X]。
        X - = lowbit(X)。
    }
    返す歳;
}
INT のmain(){
     int型のT。
    CIN >> T;
    しばらく(T-- 
    {
        int型のn;
        cinを >> N;
        以下のためにint型 i = 1 ; iが<= N; iは++します
        {
            CIN >> [i]は、
        }
        memsetの(ビット、0はsizeof (ビット))。
        以下のためにint型 i = 1 ; iが<= N; iは++します
        {
            LX [I] = クエリ([I])。
            追加([I]を、1 )。
        }
        memsetの(ビット、0はsizeof (ビット))。
        以下のためにint型 I = N; I> = 1 ; i-- 
        {
            RX [i]は = クエリ([I])。
            追加([I]を、1 )。
        }
        LL ANS = 0 以下のためにint型 i = 1 ; iが<= N; iは++します
        {
            ANS + = LX [I] *(NI-RX [i])と+(I-LX [I] - 1)* RX [i]は、
        }
        coutの << ANS << " \ nを" ;
    }
    リターン 0 ;
}

 

おすすめ

転載: www.cnblogs.com/hh13579/p/11672396.html