01 문자열 LIS (고정 문자열 사고) - 커크와 이진 문자열 (하드 버전) --- Codeforces 라운드 # 581 (사업부 2)

질문의 의미 : https://codeforc.es/problemset/problem/1204/D2

0111001100111011101000, 당신은 (가능한 한 많이 리터 중 ~ r에 LIS는 긴 시퀀스 길이 불변 상승 있도록 0) 문자열을 변경할 수 : 01 당신 같은 문자열을 제공합니다.

Q : 0111001100111011101000

A : 0011001100001011101000

아이디어 :

참조 해결 방법 : 문자열이 변경 될 수없는 것을 고려하십시오.

1.10이 변경되지 않습니다 00,01,11이 변경 될 수 있습니다, (우리는 고정 된 문자열이라고합니다).

2. 고정 문자열 문자열 플러스 고정 (변경 될 수 없습니다).

1 + 3 + 0 문자열 수정 (변경 될 수 없음).

111000101100 좋아 : 그것은 고정 시리즈와 유사하다.

고정 문자열이 직접 삭제할 수 있습니다, 예를 들어 : 생각하기 쉬운 01 + 00 + 110,010 + 110,010 + 1 == 0 (우리는 0과 동일한 수의 발견),하지만 당신은 이동 및 고정 변경할 수 없습니다 앞면과 뒷면에 영향을주지 않습니다 문자열입니다.

그래서 우리는 고정 문자열을 제거하기 위해 계속할 수 있습니다.

모두의 나머지 부분에 대한 어떤 일 개 0까지 변경할 수 있습니다.

문제는 비슷한 문제 브래킷 일치로 변환됩니다, 우리는 또한 10 일을 표시 할 수있는 경기 후 제로의 기록 번호에서 앞으로 이동, 마지막으로 표시되지 않은 한 라인에 0을 것입니다.

  1  #DEFINE IOS가 ios_base :: sync_with_stdio (0); cin.tie (0);
  2 #INCLUDE <cstdio> // sprintf와 islower와 isupper 
  3 #INCLUDE <cstdlib> // malloc에 출사 strcat와의 itoa 시스템 ( "CLS") 
  4 #INCLUDE <iostream> // 
  5 #INCLUDE <fstream> // freopen을 ( "C : \\ 사용자 \\ 13,606 \\ 바탕 화면 \\草稿가 .txt ","R ", 표준 입력) 
  6 #INCLUDE <비트 세트>
   7  // #INCLUDE <지도>
   8  // #INCLUDE <unordered_map도> 
  9 #INCLUDE <벡터>
 10 #INCLUDE <적층>
12 #INCLUDE < 문자열 .H> // 않는 strstr SUBSTR 
13 #INCLUDE < 문자열 >
 14 #INCLUDE <time.h> // 부터 srand (((서명) 시간 (NULL))); 시드 랜드 N = () 10 % - 0 ~ 9; 
15 #INCLUDE <cmath>
 16 #INCLUDE <양단>
 17 #INCLUDE <큐> // priority_queue <INT 벡터 <INT> 큰 <INT>> Q; // 이하 
18 #INCLUDE <벡터> // emplace_back
 19  // #INCLUDE <math.h>
 20  // #INCLUDE <WINDOWS.H> // (a하는 LEN +) 역방향~! ~! 
21 #INCLUDE <알고리즘> // 정렬 + 고유 : SZ = 고유 (B + 1, B + N + 1) - (b + 1) + nth_element (제 1, 제 n이 마지막 비교) 
22  이용한  스페이스 성병; // next_permutation (A + 1, A + N + 1); // prev_permutation 
23  #DEFINE (a, b는, c)에 대해 (;은 <= C ++ A A = B를하는 int 레지스터) FO
 24  #DEFINE의 FR을 (A, B, C)에 대해 (A = B를하는 int 레지스터; A> = C를 - a)
 25  #DEFINE MEM (a, b)가 memset (A, B를 sizeof (a))
 26  #DEFINE PR의 printf
 27  #DEFINE SC는 scanf
 28  #DEFINE LS의 RT 1 <<
 29  #DEFINERS의 RT << 1 | 1
 30 타입 정의  LL;
(31)  보이드 swapp ( INT & A, INTb);
32   fabss ( 더블 a);
33  INT의 맥스 ( int로 하는 INT의 b);
34  INT 미네소타 ( INT A, INT의 b);
35  INT Del_bit_1 ( INT의 N);
36  INT lowbit ( INT N);
37  의 INT abss ( INT a);
(38) // CONST 긴 길이 = INF (1LL는 << 60); 
39  CONST  이중 E = 2.718281828 ;
40  CONST  이중 PI ACOS = (- 1.0 );
41  CONST의  INT의 INF = ( 1 << 30 );
42  CONST  이중 ESP 1e- = 9 ;
43  CONST  INT 개조 = ( INT ) + 1E9 (7) ;
44  CONST의  INT의 N = ( INT ) + 1E6 (10) ;
45  
46  문자 S [N];
47 부울 F [N];
48  
(49)  INT ) (주
 50  {
 51      INT의 L;
52      S [ 0 ] = " $를 ' ;
53      SC ( " %의 S " , + S (1) );
54      리터의 나 strlen = (S) - 1 ;
55      INT에서 CNT = 0 ;
(56)      에 대한이 ( int로 I = 1을, I> = 1 - I)
 57      {
 58          의 경우 (S [I] == ' 0 ' )
(59)              (CNT) ++ ;
60          다른 
61          {
 62              의 경우 (CNT)
 (63)                  (CNT) -, F [I] = 1 ;
64          }
 65      }
 66      FO (I, 1 , l)
 (67)          의 경우 (S [I] == ' 1 ' &&! F [I])
 68              S [I] =를 ' 0 ' ;
69      PR ( " % S \ 없음 " , + S (1) );
70      반환  0 ;
(71) }
 72  
73  / * ********************************************* *************************************** * / 
74  
75  INT의 맥스 ( int로 A, 지능 b)
 76  {
 77      리턴 A> B? A : B;
78  }
 79  
80  공극 swapp ( INT & A, INTb)
 81  {
 82      ^ = ^ B = A ^ = B;
83  }
 84  
85  INT의 lowbit ( INT의 N)
 86  {
 87     리턴 - (N & ; N)
88  }
 89  
90  INT Del_bit_1 ( INT의 N)
 91  {
 92      반환 N 및 N- ( 1 );
93  }
 94  
95  INT의 abss ( INT a)
 96  {
 97      리턴 A> 0 A : - a 및
98  }
 99  
100   fabss ( 더블 A)
 (101)  {
 102      리턴 A> 0 A : - a 및
(103) }
 104  
105  INT의 미네소타 ( int로 하는 INT의 b)
 (106)  {
 107       은 <B? A : B;
108 }

 

추천

출처www.cnblogs.com/--HPY-7m/p/11447119.html