洛 谷 P2896 [USACO08FEB] 먹는는 함께 S

주제 포털

문제 해결 아이디어 :

다시 찾는 것은 감소하지 않고보다 큰 길이의 전체 길이를 감산 최장 서브 - 시퀀스에서 더 증가하지 않는다.

AC 코드 :

1 #INCLUDE <iostream>
 2 #INCLUDE <cstdio>
 3 #INCLUDE <알고리즘>
 4  
5  이용  스페이스 성병;
6  
7  INT의 N, A [ 30001 ], F [ 30001 ] DP [ 30001 ] 렌 TOT;
8  
9  INT 의 main () {
 10      는 scanf ( " %의 D ' , N);
11       ( INT 나 = 1 ; i가 <= N; I ++ )
 (12)          는 scanf ( " %의 D " , & A [I]);
13      F [++ LEN] = A [ 1 ];
14       ( INT 난 = 2 ; 나는 <= N; I ++ ) {
 15          의 경우 (a [I]> = F [LEN]) {
 16              (F)는 [++ LEN] = A [I];
17              계속 ;
18          }
 19          INT U = UPPER_BOUND (F + 1 , F + LEN + 1 , A [I]) - F;
20          (F)는 [유] = A [I];
21      }
 22      DP [++ TOT] = A [ 1 ];
23       ( INT I =2 ; I <= N; I ++ ) {
 24          의 경우 (a [I] <= DP [TOT]) {
 25              DP [++ TOT] = A [I];
(26)              계속 ;
27          }
 28          INT U = UPPER_BOUND (DP + 1 , + DP LEN + 1 , A [i]는 큰 < INT > ()) - DP;
(29)          (DP)가 [유] = A [I]; 
30      }
 31      의 printf ( " %의 D ' , N - 맥스 (TOT 렌));
32      반환  0 ;
33 }

 

추천

출처www.cnblogs.com/lipeiyi520/p/12386752.html