zoukankan      html  css  js  c++  java
  • Tyvj1057

    题目链接

    分析:
    背包,写的时候记住

    不要手残

    这里写代码片
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    
    using namespace std;
    
    const int N=100005;
    int f[32005];
    int w[N],v[N],tot=0;
    int fj[N][2];
    bool p[N];
    int n,m;
    
    int main()
    {
        scanf("%d%d",&n,&m);
        memset(p,1,sizeof(p));
        for (int i=1;i<=m;i++)
        {
            int u,e,z;
            scanf("%d%d%d",&u,&e,&z);
            w[i]=u; v[i]=e*u;
            if (z)  //附件 
                p[i]=0,fj[z][fj[z][0]==0 ? 0:1]=i;
        }
        for (int i=1;i<=m;i++)
            for (int j=n;j>=w[i];j--)
                if (p[i])
                {
                    f[j]=max(f[j],f[j-w[i]]+v[i]);
                    if (fj[i][0]&&j>=w[i]+w[fj[i][0]])
                       f[j]=max(f[j],f[j-w[i]-w[fj[i][0]]]+v[i]+v[fj[i][0]]);
                    if (fj[i][1]&&j>=w[i]+w[fj[i][1]])
                       f[j]=max(f[j],f[j-w[i]-w[fj[i][1]]]+v[i]+v[fj[i][1]]);
                    if (fj[i][0]&&fj[i][1]&&j>=w[i]+w[fj[i][0]]+w[fj[i][1]])
                       f[j]=max(f[j],f[j-w[i]-w[fj[i][0]]-w[fj[i][1]]]+v[i]+v[fj[i][0]]+v[fj[i][1]]);
                }   
        printf("%d",f[n]);
        return 0;
    }
  • 相关阅读:
    c语言7-4
    c语言 7-4
    dfs
    dfs
    二进制搜索
    BFS
    搜索多层图
    八皇后
    线段树-周长并
    线段树
  • 原文地址:https://www.cnblogs.com/wutongtong3117/p/7673306.html
Copyright © 2011-2022 走看看