牛客練習試合36-C-Rabbitのお仕事(2)(完全バックパック)


タイトルリンク:https://ac.nowcoder.com/acm/contest/328/C
考え方:この問題は私たちが完全なリュックサックに転化することができて、kつの任務の制限があるため、私たちは転化して、a[i]を再分割して、裸の完全なリュックサックです.
ACできるけど3 2 5 1 6 7このデータは通れない.....
#include
using namespace std;
const int N = 4005;
int n, w, k, d[N], a[N], ans;
int main()
{
    scanf("%d%d%d",&n,&k,&w); w -= k;
    for(int i = 1; i <= n; i++) d[i] = -1e8;
    for(int i = 0; i < n; i++)
    scanf("%d",&a[i]); ans = a[0] * k;
    for(int i = 1; i < n; i++) a[i] -= a[0];
    for(int i = 1; i < n; i++)
        for(int j = i; j <= w; j++)
            d[j] = max(d[j], d[j-i] + a[i]);
    printf("%d
",ans + d[w]); }