질문의 의미 : 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, INT 및 b); 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, INT 및 b) 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 }