站外题求助

题目总版

wangyihan_ @ 2024-11-23 17:25:34

70pts

#include<bits/stdc++.h>
using namespace std;
int n,x,m,w[26010],c[26010],f[26010],a,b,k,cnt;
int main()
{
    cin>>n>>m; 
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d%d",&x,&a,&b);
        k=1;
        while(x>k)
        {
            cnt++;
            w[cnt]=k*a;
            c[cnt]=k*b;
            x-=k;
            k*=2;
        }
        if(x>0)
        {
            cnt++;
            w[cnt]=x*a;
            c[cnt]=x*a;
        }
    }
    for(int i=1;i<=cnt;i++)
      for(int j=m;j>=w[i];j--)f[j]=max(f[j],f[j-w[i]]+c[i]);
    for(int i=1;i<=cnt;i++)x=max(x,f[i]);
    cout<<x;
    return 0;
}

|