LOJ番号P10114星の星の説明

デイリー質問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 }

論文をギャングしてください(とにかく、私はそれが論文を何を意味するのか知りません)

おすすめ

転載: www.cnblogs.com/handsome-zyc/p/11488893.html