zoukankan      html  css  js  c++  java
  • 【luogu1776】 宝物筛选_NOI导刊2010提高(02) [动规 多重背包]

    1776 宝物筛选_NOI导刊2010提高(02) 

    我...比较弱 暂时只能打出二进制优化 过段时间再来刚

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    #define ll long long
    #define rg register
    #define Max(x,y) (x)>(y)?(x):(y)
    #define Min(x,y) (x)>(y)?(y):(x)
    const int N=200+5,M=200000+5,inf=0x3f3f3f3f,P=19650827;
    int n,m,ans=0,cnt=0,f[M],w[M],v[M]; 
    template <class t>void rd(t &x){
        x=0;int w=0;char ch=0;
        while(!isdigit(ch)) w|=ch=='-',ch=getchar();
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
        x=w?-x:x;
    }
    
    int main(){
    //    freopen("in.txt","r",stdin);
        rd(n),rd(m);
        for(int i=1,a,b,c;i<=n;++i){
            rd(a),rd(b),rd(c);
            for(int j=1;j<=c;j<<=1)    w[++cnt]=j*a,v[cnt]=j*b,c-=j;
            if(c) w[++cnt]=c*a,v[cnt]=c*b;
        }
        for(int i=1;i<=cnt;++i){
            for(int j=m;j>=v[i];--j) f[j]=Max(f[j],f[j-v[i]]+w[i]);
        }
        printf("%d",f[m]);
        return 0;
    }
    二进制优化
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    #define ll long long
    #define rg register
    #define Max(x,y) (x)>(y)?(x):(y)
    #define Min(x,y) (x)>(y)?(y):(x)
    const int N=200+5,M=200000+5,inf=0x3f3f3f3f,P=19650827;
    int n,w,ans=0,a[N],b[N],c[N],f[M]; 
    template <class t>void rd(t &x){
        x=0;int w=0;char ch=0;
        while(!isdigit(ch)) w|=ch=='-',ch=getchar();
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
        x=w?-x:x;
    }
     
    int main(){
    //  freopen("in.txt","r",stdin);
        rd(n),rd(w);
        for(int i=1;i<=n;++i){
            rd(a[i]),rd(b[i]),rd(c[i]);
            for(int v=w;v>=b[i];--v){
                for(int j=1;j<=c[i];++j)
                if(v>=b[i]*j) f[v]=max(f[v],f[v-b[i]*j]+a[i]*j);
                ans=Max(ans,f[v]);
            }
        }
        printf("%d",ans);
        return 0;
    }
    30昏 裸的完全背包
  • 相关阅读:
    jQuery点击弹出遮罩层(弹出模态框),点击模态框消失
    ubuntu delect opencv
    protobuf安装
    caffe中使用matlab接口
    protobuf安装
    caffe安装2
    caffe安装1
    PHP学习笔记,js
    PHP学习笔记-动态属性添加
    Ubuntu14.04安装Moodle
  • 原文地址:https://www.cnblogs.com/lxyyyy/p/11177003.html
Copyright © 2011-2022 走看看