首页 > 其他分享 >【动态规划】背包问题----完全背包

【动态规划】背包问题----完全背包

时间:2022-10-01 10:12:16浏览次数:75  
标签:... 背包 int max ---- 物品 include 动态

题目描述

acwing 完全背包

要点

1.每种物品可选无数次
2.总体积不超过V
3.总价值最大

分析

按照第i个物品选几个将集合进行划分

第i种物品1件物品都不选 f[i - 1][j]
第i种物品选1件 f[i - 1][ j - v[i]] + w[i]
第i种物品选2件 f[i - 1][ j - v[i] * 2] + w[i] * 2

第i种物品选k件 f[i - 1][ j - v[i] * k] + w[i] * k


问题的属性是最大值,则f[i,j]可以表示如下

f[i,j]=max(f[i−1][j],f[i−1][j−v[i]]+w[i],f[i−1][j−v[i]∗2]+w[i]∗2,f[i−1][j−v[i]∗3]+w[i]∗3,...f[i−1][j−v[i]∗k]+w[i]∗k) (1)

我们观察(2)式如下
f[i,j−v[i]]=max(f[i−1][j−v[i]],f[i−1][j−v[i]∗2]+w[i],f[i−1][j−v[i]∗3]+w[i]∗2,...f[i−1][j−v[i]∗k]+w[i]∗(k−1))(2)

代码

与01背包问题的基础问题一样,f[i,j]也可以使用一维数组进行表示

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 1010;

int v[N], w[N];
int f[N];

int main()
{
    int n, m;
    scanf ("%d%d", &n, &m);

    for (int i = 1; i <= n; i ++) scanf ("%d%d", &v[i], &w[i]);

    for (int i = 1; i <= n; i ++) 
        for (int j = v[i]; j <= m; j ++)
            f[j] = max (f[j], f[j - v[i]] + w[i]);

    printf ("%d\n", f[m]);

    return 0;
}

标签:...,背包,int,max,----,物品,include,动态
From: https://www.cnblogs.com/LHgogo/p/16746841.html

相关文章

  • 能不能手写Vue响应式?前端面试进阶
    Vue视图更新原理Vue的视图更新原理主要涉及的是响应式相关APIObject.defineProperty的使用,它的作用是为对象的某个属性对外提供get、set方法,从而实现外部对该属性的......
  • Spring源码-populateBean填充bean属性
    一、bean属性注入模式AutowireCapableBeanFactory/***没有自动装配*/intAUTOWIRE_NO=0;/***按照名字自动装配*/intAUTOWIRE_BY_NAME=1;/***按......
  • auto与decltype
    auto关键词auto仅仅是一个占位符,在编译器期间它会被真正的类型所替代。使用auto类型推导的变量必须马上初始化,这个很容易理解,因为auto在C++11中只是“占位符”,并......
  • gitlab的webhook与jenkins搭配方式
    常用的有两种,如下图  1,身份验证令牌: 令牌可以随意写,哪怕12345678都行,然后在gitlab进行配置。一种是在管理中心配置,一种是在项目对应的设置选项里面设置,都是可以实现......
  • idea常用快捷键大全
    Idea常用快捷键大全,拿小本本记下来,忘记了可以方便查找。编写代码Ctrl+Shift+Enter,语句完成。“!”,否定完成,输入表达式时按“!”键。Ctrl+E,最近的文件。Ctrl+Shift+E,......
  • P4084 [USACO17DEC]Barn Painting G
    #include<bits/stdc++.h>usingnamespacestd;constlonglongmod=1e9+7;classDP_on_tree{public: #definelllonglong lln,k; llfree[100001]; llf......
  • 工程主管负责构建什么产品?
    工程主管负责构建什么产品?我刚刚加入了一个新团队,并向我的新队友询问了我们的架构。我们在建造什么?一些人详细介绍了B2B和B2C之间的业务划分,并加入了一点B2B2C。其......
  • vite开启gzip压缩和代码分割-保证你收获满满
    为什么要开启gzip压缩有些时候,我们我们的打包后的代码文件体积比较大。我们就需要对大文件进行压缩。增加渲染速度vite开启gzip压缩下载插件yarnaddvite-compress......
  • 推动中小企业数字化转型是提升中小企业创新能力和专业化水平的重要途径,我国采取了哪些
    首先,国家层面给予了大力支持,工业和信息化部2022年8月30日举行新闻发布会,介绍党的十八大以来帮扶中小微企业等相关情况。工业和信息化部相关负责人在发布会上介绍,将构建中小......
  • 如何衡量数据质量
    如何衡量数据质量本文讨论了关键指标以及数据质量对业务绩效、创新和竞争力的重要性。据Gartner称,由于数据质量差,所有业务计划中有40%未能实现预期收益。开始的关键......