90pts,WA#12,求调
查看原帖
90pts,WA#12,求调
981994
xinglili楼主2024/4/30 17:30
#include<bits/stdc++.h>
#define int long long
using namespace std;

int n,m,C,v[10005],w[10005],d[10005],a[10],b[10],c[10],f[10005];

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>m>>C;
    for(int i=1;i<=n;i++)cin>>v[i]>>w[i]>>d[i];
    for(int i=1;i<=m;i++)cin>>a[i]>>b[i]>>c[i];

    for(int i=1;i<=n;i++)//多重背包二进制优化处理前n个物品
    {
        int t=d[i];
        for(int k=1;k<=t;k*=2)
        {
            for(int j=C;j>=k*v[i];j--)
                f[j]=max(f[j],f[j-k*v[i]]+k*w[i]);
            t-=k;
        }
        if(t>1)
            for(int j=C;j>=t*v[i];j--)
                f[j]=max(f[j],f[j-t*v[i]]+t*w[i]);
    }

    for(int i=1;i<=m;i++)//分组背包处理m个奇物
        for(int j=C;j>=0;j--)
            for(int k=0;k<=j;k++)//分配的体积
                f[j]=max(f[j],f[j-k]+(a[i]*k+b[i])*k+c[i]);
    cout<<f[C]<<endl;

    system("pause");
    return 0;
}
2024/4/30 17:30
加载中...