zoukankan      html  css  js  c++  java
  • HDU5410 CRB and His Birthday(完全背包)

    题意:有n件商品,每件可买多次,共m元钱,买每种物品,都会得到x*a[i]+b[i]个糖(x为购买的数量),问最多可得到多少糖。

    分析:完全背包,多比较一下当前是否是第一次购买。所以有三种状态取最优。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <queue>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    int n,m,dp[2001][2],w[1001],a[1001],b[1001];
    int main()
    {
        //freopen("in.txt","r",stdin);
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&m,&n);
            memset(dp,0,sizeof(dp));
            for(int i=0;i<n;i++)
            {
                scanf("%d%d%d",&w[i],&a[i],&b[i]);
            }
            for(int i=0;i<n;i++)
            {
                for(int j=w[i];j<=m;j++)
                {
                    dp[j][1]=max(dp[j][1],max(dp[j-w[i]][0]+a[i]+b[i],dp[j-w[i]][1]+a[i]));
                }
                for(int j=w[i];j<=m;j++)
                {
                    dp[j][0]=dp[j][1];
                }
            }
            printf("%d
    ",dp[m][1]);
        }
        return 0;
    }
  • 相关阅读:
    最长上升子序列(实验回顾)
    数据库应用开发一、vs
    全文检索
    mangtomant 增删改查
    django
    SQLAlchemy 增删改查 一对多 多对多
    Flask-Sqlalchemy—常用字段类型说明
    flask
    文件下载
    python连接mongodb
  • 原文地址:https://www.cnblogs.com/d-e-v-i-l/p/4744869.html
Copyright © 2011-2022 走看看