zoukankan      html  css  js  c++  java
  • 2015 多校联赛 ——HDU5410(dp)

    Sample Input
    1 100 2 10 2 1 20 1 1
     
    Sample Output
    21

    题意:共有m元钱和n种东西,求每种单价p,而且你买x个该种物品可以得到Ax+B个,求m元钱最多能得到多少。

    思路:先01背包处理出A+B的情况,再用完全背包往里算加A能得到的情况。


    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<map>
    #include<set>
    #include<queue>
    #include<stack>
    #include<string>
    #include<algorithm>
    using namespace std;
    #define maxn 200050
    
    int T,n,m,t,k,l,tot,j;
    int q[1005][3];
    int dp[2005];
    
    int main()
    {
        int k,n;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&k,&n);
            for(int i = 1;i <= n;i++)
                scanf("%d%d%d",&q[i][0],&q[i][1],&q[i][2]);
            int maxx = 0;
            memset(dp,0,sizeof(dp));
            for(int i = 1;i <= n;i++)
                for(int j = k;j >= q[i][0];j--)
            {
                dp[j] = max(dp[j],dp[j-q[i][0]]+ q[i][1] + q[i][2]);
                maxx = max(maxx,dp[j]);
            }
    
            for(int i = 1;i <= n;i++)
                for(int j = q[i][0];j <= k;j++)
            {
                dp[j] = max(dp[j],dp[j-q[i][0]]+ q[i][1]);
                maxx = max(maxx,dp[j]);
            }
    
            printf("%d
    ",maxx);
        }
        return 0;
    }
    

      

  • 相关阅读:
    flask 基础
    新的项目部署
    linux (01) linux基础
    linux (04) linux安装mysql
    linux (06) redis安装
    linux (09) nginx反向代理,负载均衡
    linux (08) nginx入门详解
    linux (07) redis详解
    linux(05) 编译安装py3
    spring-boot war包部署(二)
  • 原文地址:https://www.cnblogs.com/Przz/p/5409771.html
Copyright © 2011-2022 走看看