首页 > 其他分享 >完全背包问题

完全背包问题

时间:2023-11-18 20:44:56浏览次数:36  
标签:背包 int namespace 完全 问题 include 1010

题目链接

Acwing 完全背包问题

题目思路

完全背包和01背包的区别在于:完全背包中的物品是可以随意数量的。对于一个物品,可以选0个,1个,...,直到选到装不下为止。

  • 这里面存在一个转化:
    image

  • 只从结果来看,完全背包的代码中,唯一区别就是把 f[i - 1][j - v[i]] 改为 f[i][j - v[i]]

代码:

#include<iostream>
using namespace std;

const int N = 1010;

int v[N], w[N];
int s[N][N];
int n, m;

int main() {
    cin >> n >> m;
    
    for (int i = 1; i <= n; i++) cin >> v[i] >> w[i];
    
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            s[i][j] = s[i - 1][j];
            if (j >= v[i]) {
                s[i][j] = max(s[i][j], s[i][j - v[i]] + w[i]);
            }
        }
    }
    
    cout << s[n][m] << endl;
    
    return 0;
}

完全背包优化至一维

  • 关键:由于完全背包中唯一更改的是 s[i][j - v[i]], 所以这个式子是要求第 i 层的结果,所以要求在计算 s[i][j] 的时候,要把 s[i][j - v[i]] 给算出来,而循环是从小到大的,所以可以直接删掉一层循环。

代码:

#include<iostream>
using namespace std;

const int N = 1010;

int v[N], w[N];
int s[N];
int n, m;

int main() {
    cin >> n >> m;
    
    for (int i = 1; i <= n; i++) cin >> v[i] >> w[i];
    
    for (int i = 1; i <= n; i++) {
        for (int j = v[i]; j <= m; j++) {
                s[j] = max(s[j], s[j - v[i]] + w[i]);
        }
    }
    
    cout << s[m] << endl;
    
    return 0;
}

标签:背包,int,namespace,完全,问题,include,1010
From: https://www.cnblogs.com/vLiion/p/17841080.html

相关文章

  • 变长子网划分问题的二叉树解法
    计网的变长子网划分、计组的变长操作码划分、数据结构的哈夫曼编码,都是前缀编码的本质(变长操作码的二叉树解法我还在琢磨中)【二叉树解法】每条从叶结点到根节点的路径上有且只有一个被分配的结点:【例】现将一个IP网络划分成4个子网,若其中一个子网是172.16.1.128/26,则下列网络中......
  • 01背包问题
    题目链接Acwing01背包问题解题思路处理输入输入n,m,v[i],w[i]等信息算法核心动态规划的思想是通过计算当前的值,这个值能被后来使用,最后得到解属性:求最大价值状态表示:只考虑前i件物品时,体积为j的最大价值思路:只考虑前i件物品时,体积为j的最大价值,这个价......
  • 01背包问题
    1.  二维表示1#include<bits/stdc++.h>2usingnamespacestd;34constintN=1010;5intn,m;//个数和背包容量6intv[N],w[N];//每个物品的体积和价值7intf[N][N];//表示状态89intmain()10{11cin>>n>>m;1213fo......
  • 问题“连接到 xxxxx 时发生错误。对等端的证书已被吊销。“的解决方案
    真的是到处是坑啊,惨痛教训,要记录以下。之前在阿里云上装的免费的ssl证书,这个星期要到期了,因为免费的证书不能续费使用。要么就得升级成收费的,要么就得重新申请免费的ssl证书。于是我就重新申请了一个证书绑定好域名,然后测试访问好像没啥问题。 直到今天我在外面打算用手机访......
  • 股票交割单生成器,持仓图,收益曲线,bs点位生成工具,完全开源分享。
    这个工具其实是从某宝淘来的,我因为之前项目需要所以就把整个源码给拿下来了,易语言的,支持标题所讲的所有功能,包括交割单,持仓图,收益曲线,bs点位,各种功能都做的挺完善的,生成的截图都是高清图,因为这个源码对于我来说现在也没有太大的意义,然后就直接开源,让同行学习一下代码里面的结构......
  • 解决icloud邮箱ssl网络错误的一种,全局代理配置有问题
    SSL错误也可能是因为代理配置今天,折腾我的macbookpro2015,发现邮件功能不能使用。而且更新系统也不行,网络不畅。最后发现原因,平时我使用谷歌学术助手igg和谷歌浏览器,这掩盖了系统全局代理一直处于错误配置的状态。并且以前配置了全局代理。但是一年到期了,没有续费会员。导致我的mac......
  • nginx常见问题
    1、400badrequest错误的原因和解决办法配置nginx.conf相关设置如下.client_header_buffer_size16k;large_client_header_buffers464k;根据具体情况调整,一般适当调整值就可以。2、Nginx502BadGateway错误......
  • Mysql解决主从慢同步问题(下)
    Mysql解决主从慢同步问题(下)原创  https://cloud.tencent.com/developer/article/1836131 三.解决办法参数关闭binlog日志可以减轻从库的负载配置文件添加如下,将不缓冲直接写入,从而加速性能sync_binlog=0innodb_flushloginnodb_flush_log_at_trx_commi=0......
  • 关于maven构建tomcat服务器一直启动不了的问题解决
    以往我都是创建maven项目后自己去配置web,再通过自己配置以下信息之后,配置tomcat。最终结果是始终报错 之后摸索发现,可以在maven项目配置前将以上“maven主路径,用户设置文件,本地仓库”信息确定好。 在弹出的页面设置好后,再创建maven项目便省时很多,tomcat配置后可以使用 ......
  • 开发中遇到的echarts常见问题
    柱状图legend不出现①没有配置legend中的data属性②data的name属性与series的name属性不同设置legend阴影       itemStyle:{               opacity:1,               shadowColor:"rgba(255,255,255,1)",     ......