DP (01 배낭 문제)

밀러는 이야기 지난 주를 말한다 작고 작은 하이 호 열심히 노력이 마침내 복권의 광대 한 수있어! 그리고 지금, 마지막 시간은 작은 호의 보상을받을 수 있습니다!

호는 이제 M 시트 복권, 현상 및 현상 영역의 손이 작은 것은 각각 제 i 부재 어렵게하기 위해, 추첨 시트를 구속하고, 또한 한번 교환 할 수있는 상품은 (ⅰ) 필요한 필요 N에 1 번째 N 부를 가지고 추첨은 각 호 작은 상품이 나는 조각 값 값 (i)를 점수로 최우수상을 포함하여 포인트를 가지고있다, 낭비되지 않습니다, 그는 수상의이 작품의 자신의 기본 설정 값을 표명했다. 이제 그는 상품으로 교환 할 수 있습니다 그의 손에 이러한 복권, 그래서 이러한 값과 최대에 상품 기본 설정 덕분에, 알고 싶어.

팁 하나 : 추상적 합리적인 문제, 국가의 정의는 가장 중요한 단계 동적 프로그래밍입니다

팁 두 가지 : 당신은 시간 소비를 줄이기 말했다, 우리는 공간 소비를 감소하는 방법을 살펴

입력

각각의 테스트 지점 (입력 파일) 및 테스트 데이터의 집합.

각 시험 양의 정수 N과 M의 제 2 막의 개수는, 그 상, 추첨 호 손 작은 수를 나타낸다.

이전의 의미를 설명 할 때 다음 설명 n 행의 각 행은, 상, 두 정수의 작동 제가 필요 항 (I) 및 값 (I)을 설명한다.

그 테스트 데이터를 확인

데이터의 100 %로, N의 값은 M의 값보다 10 ^ 5없고, 500 이하인

2 * 10 ^ 5 값보다 더 이상 데이터를 필요 (I)의 100 % (나)을 초과하지 않는 10 ^ 3

샘플 입력

5 1000 
144 990 
487 436 
210 673 
567 58 
1056 897

샘플 출력

2,099
산출

테스트 케이스를 들어, 정수 Ans By의, 호 출력이 작은 총 선호 특성 값을 얻을 수있다 나타낸다.

#INCLUDE <iostream> 
#INCLUDE <iostream> 
#INCLUDE <cstdio> 
#INCLUDE < 문자열 > 
#INCLUDE <CString을> 
#INCLUDE <알고리즘> 
#INCLUDE <STDIO.H> 
#INCLUDE < 문자열 .H> 
#INCLUDE <벡터> 
# 포함 < SET >
 은 USING  공간 STD,
 INT의    V [ 509 ], W [ 509 ] DP [ 509 ] [ 100009은 ]; // 시작 어레이 ML 결과 큰 하나 이차원 어레이이다.
// 나중에 작은 WA 결과의 대형 2 차원 어레이. 

INT주 () 
{ 
    INT의 N, 백;
    반면 (CIN N >> >> 가방) 
    { 
        memset 함수 (DP, 0 , 는 sizeof (DP)); // 初始化为0 
         // memset 함수 (V, 0는 sizeof (V));
        // memset 함수 (0, w,는 sizeof () w); 
        위한 ( int로 I = 1 ; I ++는, 난 <= N ) 
        { 
            CIN >> [I] >> w V [I]; 
        } 
        에 대해 ( int로 I = 1 난 ++; i가 N = < ) 
        { 
            위해 ( INT= J . 1 ; J <= 가방, J ++ ) 
            { 
                IF (J> = W [I]) // 배낭 용량은 제품의 양을 충족 할 때 
                {
                     // 울트라 배열을 도와 경계 DP 
                    DP [I] [J] = 최대 ( DP [I는 - 1이다. ] [J], DP [I - 1이다. ] [J - W [I]를] + V [I]) // 제품의 가치와 취해진 제품의 최대 값하지 않는다 
                }
                 다른 
                    DP를 [I [J]를 DP를 = I - 1이다. ] [J]을; // 제품의 부피보다 작은 배낭 볼륨 항목 만의 최대 값을 취할 수 
            } 
        } 
        COUT << DP [N- [백] << ENDL; 
    } 

    반환  0; 
}

 

추천

출처www.cnblogs.com/nonames/p/11228441.html