zoukankan      html  css  js  c++  java
  • P1064 金明的预算方案

    思路:就是一个背包问题  因为数据范围小,所以不把 1个带附着物的东西 拆成 带1个带2个或不带

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=30000+10;
    int f[maxn];
    int zhujianw[maxn],zhujianv[maxn],cijianw[maxn][3],cijianv[maxn][3];
    int main(){
        int n,m;
        cin>>n>>m;
        int v,p,q;
    
    for(int i=1;i<=m;i++){
        cin>>v>>p>>q;
        if(!q){
            zhujianw[i]=v,zhujianv[i]=v*p;		
        }
        else {
            cijianw[q][0]++;
            cijianw[q][cijianw[q][0]]=v;
            cijianv[q][cijianw[q][0]]=v*p;
        }
    
    }
    
    for(int i=1;i<=m;i++){
        for(int j=n;zhujianw[i]&&j>=zhujianw[i];j--){
            f[j]=max(f[j],f[j-zhujianw[i]]+zhujianv[i]);
            if(j>=zhujianw[i]+cijianw[i][1])
                f[j]=max(f[j],f[j-zhujianw[i]-cijianw[i][1]]+zhujianv[i]+cijianv[i][1]);
            if(j>=zhujianw[i]+cijianw[i][2])
        f[j]=max(f[j],f[j-zhujianw[i]-cijianw[i][2]]+zhujianv[i]+cijianv[i][2]);
        if(j>=zhujianw[i]+cijianw[i][1]+cijianw[i][2])
            f[j]=max(f[j],f[j-zhujianw[i]-cijianw[i][1]-cijianw[i][2]]+zhujianv[i]+cijianv[i][1]+cijianv[i][2]);
    }
    }
    cout<<f[n]<<endl;
        return 0;
    }
    

      

  • 相关阅读:
    系统综合实践_5
    系统综合实践_4
    系统综合实践_3
    系统综合实践_2
    系统综合实践_1
    软件工程17—第09组 Beta版本演示
    软件工程16—第09组 Beta冲刺(4/4)
    软工实践个人总结
    第06组 Beta版本演示
    第06组 Beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/ttttttttrx/p/9885823.html
Copyright © 2011-2022 走看看