ナンバースター(シングルポイントの更新、および接頭辞を求めます)

http://acm.hdu.edu.cn/showproblem.php?pid=1541

質問の意味:二次元平面座標、座標が与えられているn個の星は、より低い各レベルの星のための星左の星の数を提供します。

統計的1-N-1レベルの数。

解決策:オーダーの特殊な性質を考えると、あなたは星のそれぞれの統計ツリーレベルの配列を使用することができますので。

注二つのこと:1、入力のマルチ題しセット(タイトルは言う必要はありませんでした.. T)

図2に示すように、ゼロからの範囲の座標が、一般的なツリー状の配列の先頭から、座標がインクリメントされるように。


長い長いLLのtypedef。
int型のXM。
INT X [15009]、Y [15009]。
int型のANS [15009]; 
INT C [32009]。
INT lowerbit(INT X)
{ 
    戻りX&( - X)。
} 

ボイド追加(int型のx、int型のval)
{ 
    ため(INT I = X; I <= XM、I + = lowerbit(I))
    { 
        C [I] + =ヴァル。
    } 
} 

int型getsum(INT X)
{ 
    int型ANS = 0。
    用(int型I = X; I> = 1; I - = lowerbit(I))
    { 
        ANS + = C [i]は、
    } 
    ANSを返します。
} 

int型のmain()
{ 
    int型のn; 
    一方、(〜のscanf( "%d個"、&N))
    { 
        memsetの(C、0、はsizeof(c)参照)。
        memset(ANS、0、はsizeof(ANS))。
        以下のために(INT I 0 =; N I <; I ++)
        {
            scanf関数( "%D%D"、およびX [i]は、&​​Y [I])。
            X [i]は++; 
            XM = MAX(X [i]は、XM)。
        } 
        int型の和= 0。
        以下のために(INT I = 0、I <N; I ++)
        { 
            合計= getsum(X [I])。
            追加(X [i]は、1)。
            ANS [合計] ++; 
        } 
        ため(INT I 0 =; N iが<; I ++)
        { 
            COUT << ANS [I] << ENDL。
        } 
    } 

    0を返します。
}

 

おすすめ

転載: www.cnblogs.com/nonames/p/12238622.html