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を返します。 }