(事業部の定格。2)教育Codeforcesラウンド67 B +接頭タイトルの二分法[] []富栄チタンINGシリーズ

 

離れて左から右に取ることができます文字列s、sの文字を考えると、少なくとも最初の数秒の位置までトンのスペルを:質問の意味

アイデア:接頭レコード2次元配列した後、半分にすることができます。

1の#include <ビット/ STDC ++ H>
 2   
3  使用して 名前空間STDを、
4  の#define 5000000 INF
 5  の#define N 210050
 6  INTの和[N] [ 30 ]。
7  int型 ARR [ 30 ]。
8  文字列sの。
9  文字列strの。
10  INT N。
11  ブール slove(int型のID){
 12      のためのINTは私= 0 ; I < 26 ; I ++ 13          場合を(ARR [I] -sum [ID] [I]> 0 14              リターン 15は     返す 16  }
 17  int型のmain(){
 18      CIN >> N。
19      cinを>> STR。
20      INT _;
21      cinを>> _;
22      のためにINT iは= 0 ; I <str.size(); I ++ ){
 23          ++和[I] [STR [I]は、 - ' ' ]。
24 なら(I!= 0 ){
 25                       INT J = 0 ; J < 26 ; J ++ ){
 26                  和[I] [J] + =和[I- 1 ] [J]。
27              }
 28          }
 29      }
 30      ながら(_-- ){
 31          CIN >> S。
32          のためにINT iは= 0 ; iは<= 26 ; I ++ 33              ARR [I] = 0 ;
34          のためにINT iが= 0 ; I <s.size(); iが++ ){
 35             ARR [S [i]を- ' A ' ] ++ ;
36          }
 37          のint L = 0 38          INT R = N。
39          int型 ANS = infファイル。
40          一方(L <= R){
 41              int型ミッド=(L + R)/ 2 42              であれば(slove(MID)){
 43                  、R =半ば1 44                  ANS = 分(ANS、MID)。
45              } {
 46                  、L =ミッド+ 1;
47              }
 48          }
 49          COUT << ANS + 1 << ' \ n ' 50      }
 51      リターン 0 52 }

 

おすすめ

転載: www.cnblogs.com/pengge666/p/11837124.html