(貪欲DP)商品を購入するオファー

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

質問の意味:P-元、k個の譲歩で、あなたのn項目を与えます。購入するには2つの方法があります。

1、商品その商品価格を購入する直接費用

2、k個の購入品は、唯一のkは最も高価支払います。

ソリューション:シーケンシング、接頭辞を追求して、できるだけ貪欲使用2。


長い長いLLのtypedef。
INT [200009]。
int型のANS [200009]。

INTのmain()
{ 
    int型のT。
    scanf関数( "%のD"、&T)。
    一方、(t--)
    { 
        int型N、P、K。
        scanf関数( "%D%D%D"、&N、&P、およびK); 
        memset(ANS、0、はsizeof(ANS))。
        以下のために(; <I = N;整数iが1 = I ++)
        { 
            scanf関数( "%のD"、および[I])。
        } 
        ソート(+ 1、+ N + 1)。
        int型NUM = 0; 
        以下のために(INT I 1 =; I <= N; I ++)ANS [I] = ANS [I-1] + [I]。
        ; - (; I <= N INT iはkは= I ++)に関しては[K I] + [I] [I] = ANS ANS 
        以下のために(INT I 1 =; I <= N; I ++)
        場合(ANS [I] <= p)は
        NUM = I。
    } 

    0を返します。
}

 

おすすめ

転載: www.cnblogs.com/nonames/p/12239436.html