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を返します。 }