[문제 / 템플릿 도금액〕 매달려 광고 방법 luogu_P1169_ 보드 제품 (서스펜션 광고 방법

$ 제공자의 LT [I] [J] $은 [I] [j]가 $ 먼 높이까지 연장 좌측에 도달 먼 지점에 $ RT $으로 유사 $의 HT는

자신의 위치, 높이 1의 초기 값을 설정하여 시작

전처리 피사체 연장 상태에 따라 결정되는 각 점 범위 확장 주위

그런 다음 DP 수 있습니다 :

LT [I] [J] = 최대 (LT [I] [J], LT [I-1] [J]);
RT는 [I]는 [j]가 분 = (RT [I] [J], RT [I-1] [J]);
HT [I] [J] HT = [I-1] [J] +1;

다른 블로그를 볼 수있는 특정

#INCLUDE <비트 / stdc ++ H.>
 사용  스페이스 성병;
CONST의  INT의 maxn = 2009 ;
INT의 N, m, ans1, ans2;
INT LT [maxn] maxn, RT [maxn] maxn, HT는 [maxn] maxn], [maxn] maxn] MP;
INT 의 main () { 
    는 scanf ( " %의 D % d에 " , N, m);
    위한 ( int로 I = 1 ; 나는 <= N; I ++ )
      ( INT J = 1 ; J <= m; J ++ ) { 
        는 scanf ( " %의 D ' , MP [I] [J]); 
        LT [I] [J] = RT의 [I] [J] =제이; 
        HT [I] [J] = 1 ; 
    } 
    에 대해 ( int로 I = 1 ; i가 N = <I ++ )
      ( INT J = 2 , J <= m; J ++ )
     경우 (! MP [I] [J] = MP [I] [J = 1 ]) 
    LT [I] [J] = LT [I] [J = 1 ]; 
    
    위한 ( int로 I = 1 ; i가 <= N; I ++ )
      ( INT J = M- 1 , J> = 1 ; j-- )
     경우 ! (MP [I] [J] = MP [I] [J + 1 ]) 
    RT [I] [J]RT = [I] [J + 1 ]; 
    
    위한 ( int로 I = 1 ; i가 <= N; I ++ )
      ( INT J = 1 ; J <= m; J ++ ) {
         경우 는 (i> 1 ! && MP [I] [J] = MP [I- 1 ] [J]) { 
            LT [I] [J] = 최대 (LT [I] [J], LT [Ⅰ- 1 ] [J]); 
            RT는 [I]는 [j]가 분 = (RT [I] [J], RT [Ⅰ- 1 ] [J]); 
            HT [I] [J] = HT [Ⅰ- 1 ] [J] + 1 ; 
        } 
        int로 A = RT의 [I] [J] -lt [I] [J] + 1 ;
        INT의 B =분 (a, HT [I] [J]); 
        ans1 = 최대 (ans1, B * b); 
        ans2 = 최대 (ans2,는 * HT [I] [J]); 
    } 
    의 printf ( " 가 % d \ n 개의 %의 D " , ans1, ans2); 
}

 

추천

출처www.cnblogs.com/superminivan/p/11536188.html