ACwing :01背包问题

2023-10-26

朴素的 动规的 基本表示:

f[ i ] [ j ] : 表示只看前 i 个物品,总体积是 j 的情况下,总价值最大是多少

result = max[ f [ n ] [ 0 ~ V ] ]

f[i] [j] =

1.不选第 i 个物品: f[i] [j] = f[i - 1] [j];

2.选第 i个物品: f[i] [j] = f[i - 1] [j - v[i]];

f[i] [j] = max{1,2}

例题

在这里插入图片描述
在这里插入图片描述

//板子板子
#include <bits/stdc++.h>
using namespace std;

const int N = 1010;

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

int main()
{
    cin >> n >> m;
	//小白想检验一下生成的f数组是不是全0数组
    // for(int j = 0;j < n;j++) cout<<f[j][4];
    for(int i = 1;i <= n;i++)
    {
        cin >> v[i] >> w[i];
    }
    //下面这个循环是 依次考虑 当第i个物品时,体积j依次增大,直到大于v[i]时,即当前可以装下第i个物品,即拥有了第i个物品的价值。下面进行降维优化时,j从最大体积m依次减小考虑情况。
    for(int i = 1;i <= n;i++)
    {
        for(int j = 1;j <= m;j++)
        {
            f[i][j] = f[i - 1][j];
            if(j >= v[i])
            {
                f[i][j] = max(f[i][j],f[i - 1][j - v[i]] + w[i]);
                //小白手动跑了一遍检验发现 f[n][m]已经是最大的价值 因为赋值时进行了选择 
            }
        }
    }

    // int res = 0;
    // for(int i = 0;i <= m;i++)
    // {
    //     res = max(res,f[n][i]);
    // }
    cout<<f[n][m]<<endl;
    return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;

int n,m;
int f[N]; //这里进行降维优化
int v[N],w[N];

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 = m;j >= v[i];j--)
        {
            //由于此时变成了一位数组 由于比较的是和它前一位f[i-1][j-v[i]]为了更好地表示发生变化,我们应选择体积从最大的体积m依次递减
            f[j] = max(f[j],f[j - v[i]] + w[i]);
        }
    }
    cout<<f[m]<<endl;
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ACwing :01背包问题 的相关文章

  • Redis缓存击穿、雪崩、穿透!(超详细)

    缓存的击穿 穿透和雪崩应该是再熟悉不过的词了 也是面试常问的高频试题 不过 对于这三大缓存的问题 有很多人背过了解决方案 却少有人能把思路给理清的 而且 网络上仍然充斥着 大量不太靠谱的解决方案 难免误人子弟 我的这篇文章 则会对这三大缓存
  • mobaxterm的linux安装教程,MobaXterm详尽使用教程系列一

    常用SSH客户端介绍 SSH 为 Secure Shell 的简写 是目前较可靠 专为远程登入会话和其他网路服务提供安全性的合同 利用 SSH 协议可以有效避免远程管理过程中的信息泄漏问题 我们做估算的人 每天都须要与linux服务器打交道
  • html元素data属性设置变量,在VUE style中运用data中的变量的要领详解_WEB前端开发...

    近来项目中的大众组件 在复用的时刻 针对差别的场景 须要不停变动CSS里款式的值 而且已经有了全局的大众组件款式了 假如用vue传统的动态绑定class和style的体式格局去修正款式 文末会提到 须要分外写许多变量和模块class 那假如
  • k8s基本问题排查

    排查pod故障 查看pod是否正常 kubectl get pods n fronted 常见pod排查命令 kubectl logs
  • Docker

    目录 1 离线安装 1 1 下载Docker离线包 1 2 下载离线安装工具 1 3 安装 1 4 镜像加速 1 4 1 下面命令直接生成文件 daemon json 1 4 2 重新加载docker配置 1 4 3 重启docker服务
  • Android Animation.setAnimationListener()失效问题

    Android执行动画 使用Animation情景如下 Animation animation new Animation 如果需要监听动画执行 animation setAnimationListener 需要在 view startAn
  • Conda错误:Collecting package metadata (current_repodata.json): failed

    conda新安装设置清华源后发现并没有使用 且会出现错误 Collecting package metadata current repodata json failed 换了科大源也没成功 考虑可能是默认源的问题 删除 condarc文件
  • TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    1 IMCP协议介绍 前面讲到了 IP协议并不是一个可靠的协议 它不保证数据被送达 那么 自然的 保证数据送达的工作应该由其他的模块来完成 其中一个重要的模块就是ICMP 网络控制报文 协议 当传送IP数据包发生错误 比如主机不可达 路由不
  • STM32F103ZET6【HAL函开发】STM32CUBEMX------1.GPIO输出-点亮led灯

    一 硬件介绍 正点原子战舰开发板 主控芯片STM32F103ZET6 两个LED分别连接到单片机的PB5和PE5 二 STM32CUBEMX基础配置 2 1 晶振配置 如果你的板子上外部高速晶振8M和外部低速晶振32 768K都有的话 那么

随机推荐

  • Java中如何自定义数组

    Java中如何自定义数组 数组是一种非常常见的数据结构 在Java中也是一个非常重要的概念 在Java中 数组的定义和使用非常简单 但是如果我们想要自定义数组 那么可能需要一些额外的操作 Java中如何自定义数组 在Java中 数组是一种简
  • 华为OD机试 - 分苹果(Java)

    题目描述 A B两个人把苹果分为两堆 A希望按照他的计算规则等分苹果 他的计算规则是按照二进制加法计算 并且不计算进位 12 5 9 1100 0101 9 B的计算规则是十进制加法 包括正常进位 B希望在满足A的情况下获取苹果重量最多 输
  • 【转载】区块链技术原理、应用领域及挑战

    区块链技术原理 应用领域及挑战 李董 魏进武 中国联合网络通信有限公司研究院 北京 100032 引用本文 李董 魏进武 区块链技术原理 应用领域及挑战 电信科学 J 2016 32 12 20 26 doi 10 11959 j issn
  • 小米手机解BL锁教程

    1 找到设置 找到我的设备 2 点击全部参数 多点几下miui版本 直到弹出开发者模式提醒 3 返回 找到更多设置 4 找到开发者选项
  • Linux设备上时间不准确?使用chrony服务配置时间服务器实现Linux时间同步以及实现主从设备时间同步

    本文基于Linux上CentOS 7版本配合chrony 需要使用yum自行下载 进行演示 目录 一 计算机设备上的两种时间 1 硬件时间 2 系统时间 二 配置同步时间服务器 1 安装服务 2 配置服务 三 搭建主从时间服务器 1 服务器
  • 阿里云提示ECS服务器存在漏洞处理方法

    1 阿里云提供生成修复命令 但是这个只提供给企业版 即收费的 2 自己手动修复的话 采用软件升级一般都可以解决 除了提示带kernel的高危漏洞的 其他的不需要重启实例即可修复 有kernel的需要更新完成重启实例 这里可以先把 漏洞名称
  • 2021-04-08 使用Eclipse进行Web前端开发

    使用Eclipse进行Web前端开发 前言 本机为微软Surface pro4 为64位 所用操作系统为Windos 10 使用的Java版本为1 8 0 151 使用的JDK版本为JDK8 注意事项 1 Eclipse安装插件的时候一定要
  • 【mac】Mac 安装 RabbitMQ

    文章目录 1 概述 2 安装brew 3 安装 4 安装RabiitMQ的可视化监控插件 5 配置环境变量 6 后台启动 rabbitMQ 7 创建rabbitmq账号 8 给账号配置角色 1 概述 学习spring cloud 的时候 因
  • 【pytorch】pytorch模型保存技巧

    Pytorch会把模型相关信息保存为一个字典结构的数据 以用于继续训练或者推理 1 保存与加载模型参数 这是最常见的模型保存与加载方式 保存方式如下 state model state dict torch save state xxx p
  • qml实现红绿灯切换功能

    题目要求 参考代码 https download csdn net download y478225902 5260541 实现源码 import QtQuick 2 12 import QtQuick Window 2 12 Window
  • springboot整合maven Profile实现properties文件多环境配置

    步骤 首先写几个properties的配置文件 一般这样的文件有三个 而且文件的名称也也可以随意 不论你们的项目是使用的springmvc还是springboot 文件名称都可以随意指定 例如我的几个文件 在文件中写一些测试的属性值 方便测
  • 【一】重温HTML

    引言 经典对答 面试官 你了解HTML吗 回答 啊 我是来面试前端的呀 我会Vue 面试官 写文思考 写这一系列文章的时候 自己思考了几个问题 HTML的文章太多了 为什么还要写 HTML的入门谁不会 还要学 HTML的文章基本都是水文 谁
  • ES6解构赋值

    前面的话 我们经常定义许多对象和数组 然后有组织地从中提取相关的信息片段 在ES6中添加了可以简化这种任务的新特性 解构 解构是一种打破数据结构 将其拆分为更小部分的过程 本文将详细介绍ES6解构赋值 引入 在ES5中 开发者们为了从对象和
  • Mysql中MVCC的使用及原理详解

    准备 测试环境 Mysql 5 7 20 log 数据库默认隔离级别 RR Repeatable Read 可重复读 MVCC主要适用于Mysql的RC RR隔离级别 创建一张存储引擎为testmvcc的表 sql为 CREATE TABL
  • error compiling template但编辑器内未报错,处理步骤。

    1 首先寻找自己所引入的组件当中 例如用到了某个方法 而自己没有把方法写上 2 寻找自己所引入的代码当中是否有重复的代码 可能是复制的时候多复制一行而导致的 3 寻找是否有空格所导致的error compiling template 报错
  • 到处是“坑”的strtok()—解读strtok()的隐含特性

    在用C C 实现字符串处理逻辑时 strtok函数的使用非常广泛 其主要作用是按照给定的字符集分隔字符串 并返回各子字符串 由于该函数的使用有诸多限制 如果使用不当就会造成很多 坑 因此本文首先介绍那些经常误踩的坑 然后通过分析源代码 解读
  • Android——第三方Facebook授权登录获取用户信息

    由于项目中需要使用Facebook进行一键登录 所以记录下步骤 其实小伙伴直接看官网也可以 介绍的蛮详细的 先看下效果图吧 遵循以下步骤将Facebook登录添加到您的应用 Facebook开发者网站 https developers fa
  • bin文件转成C语言数组之c代码

    反汇编的时候用的着 include
  • Js弹出showModalDialog窗口---返回值或数组

    function showMyModalDialog url width height showModalDialog url dialogWidth width px dialogHeight height px center yes s
  • ACwing :01背包问题

    朴素的 动规的 基本表示 f i j 表示只看前 i 个物品 总体积是 j 的情况下 总价值最大是多少 result max f n 0 V f i j 1 不选第 i 个物品 f i j f i 1 j 2 选第 i个物品 f i j f