最初の問題をクリアし、建物K = H / Xの完全な回路の傾きが、問題は、すべての以前の建物よりも大きいどのように多くのK Kの建物依頼することです。
この問題ツリーカバーツリーのコースが、非常に面倒で、残留物は、ほとんどの単純なブロックだと思う......
N T個のビルディングブロックに、そのような順序では、その後可視それぞれビルディングブロックの高さは、(314267)などのビルディングブロック内の各定数メンテナンス視覚配列は、ビルディングブロックである(34 67)(異なるブロックに干渉しない注意、視覚ブロック(346の第一の配列のように)、第二のブロックは、シーケンス(578)であってもよいです)
各修飾のために、我々は、ライン上の配列を維持O(N / T)各ブロック内の目に見える暴力建物に必要
各お問い合わせは、私たちはクエリごとに、その後、(建物のK値が特定の順序ではなく、視覚的ではありません)Kの視覚的な順序で、これまでに、ブロック単位での最大値KMAX一定のメンテナンスを見てを必要としますブロックシーケンスを見つけることができる場合は、このブロックの建物の全てが表示されている場合、可視位置の最初の半分は、KMAXより大きい、存在する場合、この位置の後、このブロックでは見え建物の配列は、見ることができますそして、その答えを更新し、KMAXは、次を行うことを続けます
注:すべての後、時間がタイトなので、定数は、小さな点のように書かれた二つの点と、自分の最大の機能やより良いを書き込み、またはRPを破裂されますされ...
1の#include <cstdioを> 2の#include <cmath> 3 のconst int型 MAXN = 100005、sqrn = 350 。 4 int型H [MAXN]、V [sqrn] [sqrn]、C [sqrn]、L [sqrn]、R [sqrn]、ベル[MAXN]、N、M、ブロック、CNT、X、Y、CH。 5 ボイドリード(INT&X){ 6 X = 0、CH = GETCHAR()。 7 一方(CH> ' 9 ' || CH < ' 0 ')CH = GETCHAR()。 8 一方(CH> = ' 0 ' && CH <9 ')、X = X * 10 + CH- ' 0 '、CH = )(GETCHAR。 9 } 10 BOOL VIS(int型のx、int型のY){ 11 リターン(長い 長い)H [X] * Y <(長い 長い)H [Y] * X。 12 } 13 INT bfind(INT *、int型の L、INT R、INT MX){ 14 であれば(MX!)戻りL。 15 もし(!VIS(MX、[R]))のリターン 0 ; 16 INT、M = 0、ANS = 0 。 17 一方(L <= R){ 18 、M =(L + R)>> 1 。 19 であれば(VIS(MX、[M]))ANS = M、R = M- 1 。 20 他 L = M + 1 。 21 } 22の リターンANS。 23 } 24 空隙ビルド(int型X){ 25個の C [X] = 0 ; 26 INT = LST 0 。 27 のために(登録INT I = 1 [X]。I <= R [X]。++ I)の場合(H [i])とする場合(LST || VIS(LST、I!))LST = V [X] [C ++の[X] = I。 28 } 29 int型の照会(){ 30 のint TOT = 0、MX = 0 、POS。 31 のために(登録をint i = 1 ; iは= CNTを<; ++ I)もし(C [i])と{ 32台の POS = bfind(V [i]は、1 、C [i]は、MX);; 33 であれば(POS)TOT + = C [i]は-pos + 1、MX = V [i]は[i]は[C]。 34 } 35 リターンTOT。 36 } 37 INT メイン(){ 38 リード(N)、(m)を読み出します。 39 ブロック= SQRT(N)。 40 CNT = N / ブロック。 41 であれば(N%ブロック)++ CNT。 42 のために(登録をint i = 1 ; iは= N <; ++ I)ベル[I] =(I- 1)/ブロック+ 1 。 43 のためには、(レジスタをint i = 1 ; iは= CNTを<; ++ I)L [I] =(I- 1)*ブロック+ 1、R [i]は= i *がブロック。 44 R [CNT] = N。 45 用(レジスタint型I = 1 ; I <= M。++ I){ 46 リード(X)、読み取り(Y)。 47 H [X] = Y。 48 ビルド(ベル[X])。 49 のprintf(" %d個の\ nを" 、クエリ()); 50 } 51 リターン 0 。 52 }