• hdu-2191(完全背包+二进制优化模板)


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191

    思路:完全背包模板

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,m,dp[200100],p,h,c;
    void zerof(int cost,int val)
    {
        for(int i=n;i>=cost;i--)
        dp[i]=max(dp[i],dp[i-cost]+val);
    }
    void completf(int cost,int val)
    {
        for(int i=cost;i<=n;i++)
        dp[i]=max(dp[i],dp[i-cost]+val);
    }
    void Mul(int cost,int val,int num)
    {
        if(cost*num>=n) completf(cost,val);
        else
        {
            for(int i=1;i<=num;i*=2)
            {
                zerof(i*cost,i*val);
                num-=i;
            }
            zerof(num*cost,num*val);
        }
    }
    int main(void)
    {
        int i,j,k,t;
        cin>>t;
        while(t--)
        {
            cin>>n>>m;
            memset(dp,0,sizeof(dp));
            for(i=0;i<m;i++) 
            {
                cin>>p>>h>>c;
                Mul(p,h,c);
            }
            printf("%d
    ",dp[n]);
        }
        return 0;
    }
  • 相关阅读:
    新概念4-27
    胡雪岩06
    新概念4-26
    新概念4-25
    作业01
    day 01 小结
    计算机编程基础
    计算机组成
    markdown文档的编写
    zoj 2674 Strange Limit 欧拉定理应用 (3-E)
  • 原文地址:https://www.cnblogs.com/2018zxy/p/9837832.html
Copyright © 2020-2023  润新知