Acwing 2. 01背包问题

2023-11-13

 f[i][j]表示从前i个物品选,总体积<=j的所有选法中的最大值。

注意,当j<Vi时,表示装不下第i个物品,需要单独判断一下

状态计算:f[i][j] = max(f[i - 1][j], f[i - 1][j - v[i]] + w[i])

将集合划分为:选第i个物品不选第i个物品 两部分

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 1010;

int f[N][N];
int v[N], w[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 = 0; 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]);
        }
    }
    
    printf("%d\n", f[n][m]);
    
    return 0;
}
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 1010;

int f[N];
int v[N], w[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 = m; j >= v[i]; -- j)
        {
            f[j] = max(f[j], f[j - v[i]] + w[i]);
        }
    }
    
    printf("%d\n", f[m]);
    
    return 0;
}

采用滚动数组优化时,f[j - v[i]] 是前i - 1个(f[i - 1][j - v[i]])的选法,如果j循环从v[i]到m, 则会在计算f[j]之前算出来,此时f[j - v[i]]表示的是前i个(f[i][j - v[i]])的选法,是错误的,所以,应该将j循环从m倒循环到v[i],确保f[j - v[i]]在计算f[j]之前没有被修改过。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Acwing 2. 01背包问题 的相关文章

  • EF Core 返回 null 关系,直到直接访问

    我有一些如下所示的模型 public class Mutant public long Id get set Relations public long OriginalCodeId get set public virtual Origi
  • 与 MinGW 的静态和动态/共享链接

    我想从一个简单的链接用法开始来解释我的问题 假设有一个图书馆z它可以编译为共享库 libz dll D libs z shared libz dll 或静态库 libz a D libs z static libz a 让我想要链接它 然后
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • 当我尝试传递临时地址作为参数时,它是一个 UB 吗?

    对于以下 C 代码 include
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 如何配置 qt Creator 以显示 C++ 代码而不是反汇编程序?

    昨天我做了很多事情 比如更新 GCC Clang 和重新安装 Qt Creator 今天 在逐步调试我的代码时 调试器显示的是反汇编代码 而不是我编写的 C 代码 紧迫F10 or F11 调试器正在进入汇编代码而不是 cpp nor h我
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC

随机推荐

  • VBS基础篇 - 条件语句(1) - If...Then...Else

    转自http www cnblogs com sirrah articles 2349078 html 使用条件语句和循环语句可以控制脚本的流程 使用条件语句可以编写进行判断和重复操作的 VBScript 代码 在 VBScript 中可使
  • 法如X330扫描仪在行业内的使用性

    3D扫描仪是一种用于捕捉实物三维模型的设备 通常通过激光 光线 摄像头等技术获取物体表面的点云数据 并将其转换成可编辑的三维模型 扫描仪的操作流程 1 准备工作 首先需要确定需要扫描的物体的大小 形状和材质 根据物体大小选择适当的扫描仪型号
  • 每天学命令

    report timing clock from edge from lead trail clock to clk signame list edge to lead trail rise fall early late hpin che
  • 【webrtc】音频采集-链接错误总结

    在集成webrtc的过程中 大量使用了directshow 大量的链接失败 而lib库又不好找 花费了大量时间 分享出来 共同学习 1 wmcodecdspuuid lib 1 gt audio device lib audio devic
  • 分析如何计算TVS管的功率?

    常见的汽车电源部分的原理图 分别是防反接模块和LDO模块 我们的客户要求ISO7637 2脉冲5为40V 400ms 内阻2欧姆 我开始时用的SMBJ20CA 结果TVS管被烧毁 后改成SMBJ36CA 现在可以过ISO7637 2脉冲5
  • TCP通信流程解析

    B S通信简述 整个计算机网络的实现体现为协议的实现 TCP IP协议是Internet的核心协议 HTTP协议是比TCP更高层次的应用层协议 HTTP HyperText Transfer Protocol 超文本传输协议 是互联网上应用
  • java变量的种类及作用域

    1 变量 在软件系统中 是将数据存储在内存之中的 而对内存中的数据的引用就是变量 可以理解为变量就是内存中数据的代词 简单说 变量就是指代在内存中开辟的存储空间 用于存放运算过程中需要用到的数据 代码如下所示 1 int a 5 2 int
  • 机器学习第九章树回归

    文章目录 引言 9 1复杂数据的局部性建模 9 2连续和离散型特征的树的构建 9 3将CART算法用于回归 9 3 1构建树 9 4树剪枝 9 4 1预剪枝 9 4 2后剪枝 9 5模型树 9 6小结 引言 上一章的线性回归包含了一些强大的
  • 安装程序无法验证产品密钥解决方案

    加载镜像 运行sources setup exe安装
  • dwz+struts+ajax,DWZ富客户端框架(dwzjs)结合struts2的增改删查

    DWZ是实用的国产JQuery UI框架 个人感觉比较好用 他和服务器端主要通过Ajax方式交互 数据格式为json 服务器响应数据代码示例 statusCode 200 message 操 DWZ是实用的国产JQuery UI框架 个人感
  • 【雕爷学编程】Arduino动手做(65)---TCRT5000红外寻迹传感器模块3

    37款传感器与模块的提法 在网络上广泛流传 其实Arduino能够兼容的传感器模块肯定是不止37种的 鉴于本人手头积累了一些传感器和执行器模块 依照实践出真知 一定要动手做 的理念 以学习和交流为目的 这里准备逐一动手试试多做实验 不管成功
  • layuiAdmin后台框架以及动态权限(二)

    之前写的ssm权限系统 不再赘述 由于之前的系统是由上到下 一层层查找封装的权限数据结构 系统性能不好 和数据库会有多次交互 下面介绍第二种方式 上一篇 layuiAdmin后台框架以及动态权限 源码杂录的博客 CSDN博客 layuiad
  • KORNIA与torch 版本存在依赖关系

    KORNIA 0 58对应torch 1 7 以上对应1 8 可以多下载几个多次安装 直到支持
  • html 引入md文件,webpack将打包目录下的md、html文件解析了

    webpack 加载不加载哪个文件 与你把文件放在哪个目录无关 与你设不设置 loader也无关 webpack 打包的时候会静态代码分析 从入口文件开始 把你require import的文件打包 比如 import xx from sr
  • SPSS-线性回归

    线性回归的因变量是连续数值型变量 回归的分类见113985634 R方 变量之间是否有相关性 模型汇总表 中R表示拟合优度 值越接近1表示模型越好 但不能说他们之间不相关 可能是非线性相关 一元线性回归里 相关系数平方就是R方 多元线性回归
  • 一个交期建议程序的坑 4gl SQL

    一个交期建议程序的坑 供应表已经包含了库存 替代料 需求表依然减掉了库存替代料 select 后的sum修改之后 忘记修改having的语句 差点搞死人 防不胜防 这里用到的算法 一张供应表 一张需求表 需求表不包含库存 在验量 替代量 在
  • 数据库连接运算(join)

    联接有三种 联接和自然联接 这里是算术比较符 外联接 1 联接 从R和S的笛卡儿乘积中选取满足条件 i j 的元组 2 自然联接 naturaljoin 两个关系R和S的自然联接操作具体计算过程如下 计算R S 设R和S的公共属性是A1 A
  • elasticsearch 安装配置

    20211208 es允许远程访问 在本地启动Elasticsearch后 发现只能用localhost和127 0 0 1访问 换成电脑的ip地址 显示拒绝访问 需要修改 config elasticsearch yml下的network
  • msvcr120.dll错误的解决方法

    msvcr120 dll错误 今天本来想操作mysql的 当我把那些文件配置好准备安装mysql时 bin gt mysqld install 居然报了个msvcr120 dll错误 就去寻找这个问题解决方法 原来是在C 资源库里少了一个资
  • Acwing 2. 01背包问题

    f i j 表示从前i个物品选 总体积 lt j的所有选法中的最大值 注意 当j