Acwing 5. 多重背包问题 II

2023-11-03

 本题朴素做法与完全背包类似,那么优化解法是不是也可以借鉴完全背包那样呢?

答案是否定的,因为完全背包中的物品有无限个,而多重背包中的物品是有限个,两个公式不能进行合并(有点级数的意思?),也就是说,max函数不能通过总体的最大值减去最后一项的最大值得到前面的最大值。

此处采用二进制优化多重背包,将优化后的多重背包视为0/1背包进行求解。

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 15000;

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

int main()
{
    cin >> n >> m;
    
    int cnt = 0;
    for (int i = 1; i <= n; ++ i)
    {
        int a, b, s;
        cin >> a >> b >> s;
        
        int k = 1;
        while (k <= s)
        {
            cnt ++;
            v[cnt] = a * k;
            w[cnt] = b * k;
            s -= k;
            k *= 2;
        }
        
        if (s > 0)
        {
            cnt ++;
            v[cnt] = a * s;
            w[cnt] = b * s;
        }
    }
    
    n = cnt;
    
    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]);
        }
    }
    
    cout << f[m] << endl;
    
    return 0;
}

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

Acwing 5. 多重背包问题 II 的相关文章

  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 私有模板函数

    我有一堂课 C h class C private template
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • 智能家居解决方案及企划书

    一 背景 随着科技的不断发展 智能家居已经成为了一种趋势 越来越多的人开始追求智能化 便捷化 舒适化的生活方式 智能家居市场也因此迅速崛起 本企划书旨在为智能家居市场提供一套完整的解决方案 帮助企业在竞争激烈的市场中占据一席之地 二 市场分
  • verilog设计——SPI

    spi master timescale 1ns 1ps module spi master parameter CLK FREQUENCE 50 000 000 system clk frequence SPI FREQUENCE 5 0
  • 【简单代码】Python 海龟画图简单实现任何图象落在窗口中心处(五角星为例)

    话不多说直接上代码 import turtle import math def go centre zuobiao 此函数实现初始笔点左上移 因为本代码五角星是顺时针画 即在右下角 hang list lie list for hang l
  • Win7/Win10移动用户文件夹(C:\Users)移到非系统盘(如D:)

    Windows的用户文件夹默认所在位置是系统盘 通常是C盘 下的 Users 目录之内 该文件夹中保存着所有的用户个人数据 比如你保存在 桌面 上的文件 实际上是保存在C Users 你的用户名 Desktop 目录之中 再比如你保存在 我
  • 基于标志点特征高精提取与匹配方法,进行双目、结构光、RGBD相机、单目相机多视拼接

    1 工作原理 人工张贴标志点 变换位置拍照 相邻照片的公共视野内有相同的标志点群 匹配两张照片对应标志点对 通过三对以上标志点对 实现两张照片间的坐标变换求解 2 标志点特征 圆形 分类 编码 粘贴于被测物体表面 可利用编码信息辅助特征匹配
  • RTSP/Onvif协议安防平台EasyNVR调用接口录像会被自动删除的原因排查与解决

    EasyNVR安防视频云服务是基于RTSP Onvif协议接入的视频平台 可支持将接入的视频流进行全平台 全终端的分发 分发的视频流包括RTSP RTMP HTTP FLV WS FLV HLS WebRTC等 平台丰富灵活的视频能力 可应
  • yaml语法及格式校验

    基本语法 1 yml文件以缩进代表层级关系 2 缩进不允许使用tab只能使用空格 3 空格的个数不重要 只要相同层级的元素左对齐即可 4 大小写敏感 5 数据格式为 名称 空格 值 也就是说 如果冒号后面有值 冒号后面必须要有空格 另外 后
  • 572. Subtree of Another Tree

    Given two non empty binary trees s and t check whether tree t has exactly the same structure and node values with a subt
  • 不用除号乘号完成除法(C++)

    这个问题是再力扣剑指offer上看到的 题目是 给定两个整数 a 和 b 求它们的除法的商 a b 要求不得使用乘号 除号 以及求余符号 第一印象看到这道题标注的是简单题 但我感觉他不简单 看了讲解之后感觉也不是很难 解题开始 首先一个思想
  • 180道大厂算法工程师(Python语言)面试题合集

    一 算法面试题指南 算法面试一直是程序员大厂面试中的必备环节 接下来 我将从学习思路 学习工具 训练方法 模拟实战这四个角度来分析算法面试经验 1 思路篇 博观而约取 厚积而薄发 1 时间复杂度 空间复杂度 时间复杂度是衡量算法执行效率的重
  • win7 系统盘如何瘦身! 可整理出4-5G。

    1 移走虚拟内存文件到非系统盘 大家都知道 为了加快系统的运行 Windows提供了虚拟内存机制 而在Windows7中 默认是开启这项功能的 而且虚拟内存文件在系统盘 比如一台2G内存的机器 虚拟内存文件大小就是2G 我们完全可以将他移走
  • Eclipse优化,关闭不必要的验证,简单粗暴!

    路径 Window gt Preferences gt Validation 如下图所示 只需勾选这几项即可
  • 半夜睡不着,MFC搞起来!

    一 MFC的概念和作用 1 什么是MFC 全称 Microsoft Foundation Class Library 我们称之为微软基础类库 封装了各种windowsAPI函数 C 语法 中的一些数据结构 1 MFC就是一个类库 2 MFC
  • Android Calendar的运用

    pre class java package com iwode common import java text DateFormat import java text ParsePosition import java text Simp
  • 毕业设计---用算法实现OCR文字识别(基于java实现的文字识别技术)

    文末附源码 识别效果如下图 由于是自己实现算法所以识别率不算太高 但是这个相比较一般的模型 识别这么多还是可以的 如果需要做的只是识别率比较高 不关注谁去实现的算法 可以采用第三方的API 百度智能云就很不错 使用方式和前面的百度AI实现人
  • 数据分析:利用gpt进行归因分析

    prompt 你是某电商平台的一名数据分析师 发现昨日的GMV环比下降了5 请对这数据变动做出归因 output 在电商行业中 GMV 总销售额 是一个非常重要的指标 用于衡量业务的整体健康状况 当GMV出现环比下降时 这通常意味着需要进行
  • ThinkPHP中模型的创建和实例化操作

    https blog csdn net qq 41630218 article details 80920289 https www cnblogs com 457248499 qq com p 7388270 html
  • webpack模块分写导出与导入配置 -9

    1 确保自己的电脑已经安装了node和Git软件 2 自己在盘里随便创建一个文件夹一般为英文 也就是你自己的项目名称 3 在新创建好的文件夹里面右键点击调出git指令窗口在窗口里面输入如下指令 1 npm install webpack g
  • Electron 判断互联网网络连接

    项目场景 Electron 实现桌面程序 问题描述 尝试使用原生的 EventTarget addEventListener 监听 window online 和 window offline 事件 但是在调用函数并手动断网之后 却发现并没
  • Acwing 5. 多重背包问题 II

    本题朴素做法与完全背包类似 那么优化解法是不是也可以借鉴完全背包那样呢 答案是否定的 因为完全背包中的物品有无限个 而多重背包中的物品是有限个 两个公式不能进行合并 有点级数的意思 也就是说 max函数不能通过总体的最大值减去最后一项的最大