ICPCアジア徐州2019(补题)のための予備コンテスト

E.XKCのバスケットボールチーム

PS:

ゲーム中のタイトルを読み違えが、(痛み)を発見していません。要件を満たすために必要な数は、何のアイデアがなかったことを、私はそれが非常に簡単で、ほとんどの長距離用で期待していませんでした。

溶液:

私は<jのための役割ので、[j]が完全に[I]で置き換えることができます前に戻ってからの貪欲はその後数iのために、[I] <= A [j]は、単調に増加するシーケンスを維持しています。

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  のconst  int型 MAXN = 5E5 + 5 4のtypedef 長い LL。
5  
6インラインint型リード()
 7  {
 8      チャー CH = GETCHAR()。INT X = 0、F = 0 9      一方(CH < ' 0 ' || CH> ' 9 ')は、f | = CH == ' - '、CH = GETCHAR()。
10     一方、(CH> = ' 0 ' && CH <= ' 9 ')、X = X * 10 + CH- ' 0 '、CH = )(GETCHAR。
11      リターン F - ?X:X;
12  }
 13  
14  
15  INT [MAXN]。
16  のint NUM [MAXN]。
17ベクター< INT > V。
18  INT メイン(){
 19      のint N、M; N =読み取る(); M = )(読み取ります。
20      のためにint型 i = 1 ; iが<= N; iが++)[I] =読む();
21      V.push_back(N); NUM [N] = - 1 22      のためにint型 I = N- 1、I> = 1 ; i-- ){
 23          INT TMP = A [i]が+ M。
24          INTは L = 0INT R = V.size() - 1 ;
25          INT ANS = - 1 26          一方(L <= R){
 27              INT半ば=(L + R)/ 2 28              であれば([V [中間]]> = TMP) 
 29              {
 30                 ANS = MAX(ANS、V [中間])。 
31                  R =半ば1 32              }
 33              {
 34                  、L =ミッド+ 1 35              } 
 36          }
 37          であれば(ANS == - 1)NUM [I] =のANS。
38               NUM [I] = ANS-I- 1 39          であれば([I]> [V [V.size() - 1 ])V.push_back(I)。
40          
41      }
 42      のためのint型 i = 1 ; iが<= N; I ++){
 43          であれば(I == 1)COUT << NUM [I]。
44          他の裁判所未満<< "  " << NUM [i]は、
45      }    
 46      リターン 0 47 }

 

おすすめ

転載: www.cnblogs.com/Msmw/p/11482844.html