以上の2019頭の牛オフサマースクールキャンプ(最初の)補充

A.Equivalentプレフィックス

問題の意味を2つの含むアレイをn個の要素、Bが与えられると、アレイが最大のp(p <= n)を求め、同じ要素を含まない、及びbは同等であるように、等価本明細書には、[ように定義されますL、R]およびB [L、R]は添字の最小値(1 <= 1 <= R <= P)に等しいです。

ソリューション:

1、pが単調スタックは、Laを取得し、横断する小から大へ、1〜Nの範囲[i]は、[i]が小さい要素をLB [i]は共感度の比を表します。I番目の要素、呂[i]が!=左心室[i]は、iの条件が満たされていない説明を含むセクションを含む、次いでpは、I-1の最大を取ることができる場合。

単調なスタック

ACコード:

1の#include <iostreamの>
 2の#include <sstream提供>
 3の#include <fstreamの>
 4の#include <アルゴリズム>
 5の#include < ストリング >
 6の#include <CStringの>
 7の#include <iomanip>
 8の#include <cstdlib>
 9#含む<CCTYPE>
 10の#include <ベクトル>
 11の#include <cmath>
 12の#include <ctimeの>
 13の#include <積層>
 14の#include <キュー>
 15の#include <地図>
 16の#include < 設定 >
17  の#defineMEM(A、B)のmemset(A、B、はsizeof(A))
 18  の#defineランダム(B)(RAND()%(B-A + 1)+ A)
 19  の#define ULLのunsigned long長い
 20  #定義 2.71828182 E
 21  の#defineパイACOS(-1.0)
 22  使用 名前空間STDを、
23  のconst  int型 MAXN = 1E5 + 5 24  int型N、[MAXN]、B [MAXN]。
25  INT ラ[MAXN]、Lbは[MAXN]。 
26スタック< 整数 > SA、SB;
27  int型リード()
 28  {
 29      INT S = 1、X = 0 30      CHAR CH = GETCHAR()。
31      一方、 {(isdigit(CH)!)場合(CH == ' - ')S = - 1 ; CH = GETCHAR();}
 32      ながら(isdigit(CH)){X = 10 * X + CH- ' 0 ' ; CH = GETCHAR();}
 33      リターン X * S。
34  }
 35  ボイドのinit()
 36  {
 37      ながら(!sa.pop()sa.empty())。
38      しばらく(!sb.pop()sb.empty());
39      のためにint型 I = 1 ; ++; iが<= N I)
 40      {
 41          ながら(!sa.empty()&& [I] < [sa.top()])sa.pop();
42          であれば(sa.empty())ラ・[I] = 0 ;
43          ラ[I] = sa.top()。
44          sa.push(I)。
45      }
 46      のためのint型 I = 1 ; ++; iが<= N I)
 47      {
 48          ながら(!sb.empty()&& B [i]は< B [sb.top()])sb.pop();
49          であれば(sb.empty())Lbは[I] = 0;
50           Lbは[I] = sb.top()。
51          sb.push(I)。
52      }
 53  }
 54  のint main()の
 55  {
 56      IOS :: sync_with_stdio()。
57      cin.tie(0); cout.tie(0 )。
58      一方(〜のscanf(" %d個"、&N))
 59      {
 60          GETCHAR()。
61          のためにint型 i = 1 ; iが<= N; I ++)[I] = 読み取ります();
62         以下のためにint型 I = 1 [I] = B I ++; iが<= n)を()読み取ります。
63          INT ANS = N。
64          のinit();
65          のためにint型 I = 2 ; iが<= N ++ I)
 66          {
 67              場合(ラ[I] = Lbの[I])
 68              {
 69                  ANS = I- 1 70                  ブレーク;
71              } 
 72          }
 73          COUT << ANS << ENDL。
74      }
 75 }
コードの表示

2、デカルト木のアプローチ

 

 

統合

おすすめ

転載: www.cnblogs.com/wangzhebufangqi/p/11233768.html