全部评论 1

  • #include<bits/stdc++.h>
    using namespace std;
    int m,n;
    int v[10000],p[10000],q[10000],a[10000][3];
    int f[10000];
    int main()
    {
    cin>>m>>n;
    m/=10;
    for(int i=1;i<=n;i++)
    {
    cin>>v[i]>>p[i]>>q[i];
    v[i]/=10;
    if(q[i]!=0)
    {
    a[q[i]][0];
    a[q[i]][a[q[i]][0]]=i;
    }
    }
    for(int i=1;i<=n;i
    )
    {
    if(q[i]!=0)
    {
    continue;
    }
    for(int j=m;j>=0;j--)
    {
    int v0=v[i],w0=v[i]*p[i];
    if(j>=v0)
    {
    f[j]=max(f[j],f[j-v0]+w0);
    }
    if(a[i][0]>=1)
    {
    v0=v[i]+v[a[i][1]];
    w0=v[i]*p[i]+v[a[i][1]]*p[a[i][1]];
    if(j>=v0)
    {
    f[j]=max(f[j],f[j-v0]+w0);
    }
    }
    if(a[i][0]>=1)
    {
    v0=v[i]+v[a[i][2]];
    w0=v[i]*p[i]+v[a[i][2]]*p[a[i][2]];
    if(j>=v0)
    {
    f[j]=max(f[j],f[j-v0]+w0);
    }
    }
    if(a[i][0]>=2)
    {
    v0=v[i]+v[a[i][1]]+v[a[i][2]];
    w0=v[i]*p[i]+v[a[i][1]]*p[a[i][1]]+v[a[i][2]]*p[a[i][2]];
    if(j>=v0)
    {
    f[j]=max(f[j],f[j-v0]+w0);
    }
    }
    }
    }
    cout<<f[m]*10;
    return 0;
    }

    2025-10-03 来自 福建

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页