구매 제품에 제공 (DP, 욕심)

https://codeforces.com/contest/1282/problem/B2

질문의 의미 : P-위안, K 양보와 함께, 당신 n 개의 항목을 제공합니다. 구입하는 방법은 두 가지가 있습니다 :

1, 상품이 구매의 직접 비용 상품 가격

2, k 번째 구매 상품 만 k는 가장 비싼 지불합니다.

해결 방법 : 순서, 추구하는 접두사와 가능한만큼 욕심 사용 2.


긴 LL 긴 형식 정의를; 
int로 A [200,009];
INT의 ANS [200,009];

) (대표 값 int 
{ 
    INT t 단계; 
    scanf와 ( "%의 D", t); 
    반면 (t--) 
    { 
        INT N, P, K; 
        scanf와 ( "% D % D % D", 및 N, P, K); 
        memset 함수 (ANS, 0는 sizeof (ANS)); 
        위한 (INT 난 = 1; I <= N; I ++) 
        { 
            는 scanf ( "%의 D ', A [I])를; 
        } 
        정렬 (A + 1, A + N + 1); 
        INT NUM = 0; 
        위한 (INT 난 = 1; I <= N; I ++) ANS [I] = ANS [I-1] + A [I]; 
        위한 (INT 나 케이 =; I <= N; I ++) ANS [I] = ANS [I - K] + A [I]; 
        위한 (INT 난 = 1; I <= N; I ++) 
        경우 (ANS [I] <= P) 
        NUM = 1; 
    } 

    0을 반환; 
}

 

추천

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