デイリー質問day7パンチ
分析
フェンウィックツリー
y軸にソートするデータのタイトルとして、私たちは私たちが唯一の私がx座標より小さいか星西に等しいのでは星の数をカウントする前に、この値は、合計が必要であることを意味し、フェンウィック木x軸を構築する必要があります私は星の評価
ツリーは、インデックス0(循環が死ぬ)で配列要素を扱うため、各x座標+1を取ることができないので
1の#include <iostreamの> 2の#include <cstdioを> 3の#include <CStringの> 4の#include <アルゴリズム> 5 の#define MAXN 15000 + 10 6 の#define MAXM 32000 + 10 + 1 7 使って 名前空間STD。 8インラインint型リード() 9 { 10 INT X = 0 。 11 ブール F = 1 。 12 チャー C = GETCHAR()。 13 のために(!; isdigit(C); C = GETCHAR())場合(C == ' -')、F = 0 。 14 のために(; isdigit(C); C = GETCHAR())x =(x << 3)+(X << 1)+ C- ' 0 ' 。 15 であれば(F) 、リターンX。 16 リターン 0 - X。 17 } 18インラインボイド書き込み(INT X) 19 { 20 であれば(X < 0){のputchar(' - '); X = - X;} 21 場合(X> 9)書き込み(X / 10 )。 22 のputchar(Xの%10 + ' 0 ' )。 23 } 24 INT N。 25 int型ツリー[MAXM]は、[MAXN] ANS。 26インラインINT lowbit(INT NUM) 27 { 28 リターン NUM&( - NUM)。 29 } 30インラインボイドビルド(INT S、INT NUM) 31 { 32 のためには、(int型 I = Sを、I <= MAXM; I + = lowbit(I))ツリー[I] + = NUM。 33 } 34インラインINTは(ASK int型S) 35 { 36 INT ANS = 0 。 37 のために(int型 ; I> = I = Sを1、I- = lowbit(I))ANS + = ツリー[I]。 38の リターンANS; 39 } 40 のint main()の 41 { 42 N = (読み取り) 43 のためには、(int型 i = 1 ; iがn = <; iは++ ) 44 { 45 のint X、Y。 46 X =リード(); yは。= )(読み取ります。 47 のx ++ ; 48件 のint =はRES (x)を尋ねます。 49の ANS [RES] ++ ; 50 ビルド(X、1 )。 51 } 52 のための(int型 I = 0 ; I <= N- 1、I ++ ) 53 { 54 ライト(ANS [I])。 55 のprintf(" の\ n " ); 56 } 57 リターン 0 。 58 }
論文をギャングしてください(とにかく、私はそれが論文を何を意味するのか知りません)