zoukankan      html  css  js  c++  java
  • dp重拾-完全背包--HDU 4508

    减肥记

    湫湫给了你每日食物清单,上面描述了当天她想吃的每种食物能带给她的幸福程度,以及会增加的卡路里量。

    Input
      输入包含多组测试用例。
      每组数据以一个整数n开始,表示每天的食物清单有n种食物。
      接下来n行,每行两个整数a和b,其中a表示这种食物可以带给湫湫的幸福值(数值越大,越幸福),b表示湫湫吃这种食物会吸收的卡路里量。
      最后是一个整数m,表示湫湫一天吸收的卡路里不能超过m。

      [Technical Specification]
      1. 1 <= n <= 100
      2. 0 <= a,b <= 100000
      3. 1 <= m <= 100000
     
    Output
      对每份清单,输出一个整数,即满足卡路里吸收量的同时,湫湫可获得的最大幸福值。
     
    Sample Input
    3
    3 3
    7 7
    9 9
    10
    5
    1 1
    5 3
    10 3
    6 8
    7 5
    6
     
    Sample Output
    10
    20
     
    一开始dp数组开小了,提示超时改了好多次才弄好。
    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int v[1001],w[1001];
    int dp[100000];
    int W,n,i;
    int max(int a,int b)
    {
        if(a>=b) return a;
        else return b;
    }
    void solve()
    {
        for(int i=0;i<n;i++)
        {
            for(int j=w[i];j<=W;j++)
            {
                if(j<w[i]) {continue;}
                dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
            }
        }
        cout<<dp[W]<<endl;
    }
    int main()
    {
        while(~scanf("%d",&n))
        {
            for(i=0;i<n;i++)
            {
                scanf("%d%d",&v[i],&w[i]);//a->v b->w
            }
            scanf("%d",&W);
            solve();
            W=0;
            memset(dp,0,sizeof(dp));
        }
        return 0;
    }
    View Code
  • 相关阅读:
    POJ2828
    Docker容器修改端口映射
    CentOS 7使用ISO镜像配置本地yum源
    Windows 自带的 Linux 子系统
    vue富文本编辑器插件vue-quill-editor使用
    修改docker容器存放位置
    Linux 硬盘相关操作
    centos7基础相关
    ubuntu-k8s搭建
    redhat 6.6 离线docker
  • 原文地址:https://www.cnblogs.com/dzzy/p/5041271.html
Copyright © 2011-2022 走看看