多重背包二进制优化

news2024/9/22 9:45:38

 可以将混合背包看作是一个特殊的多重背包,只要转化一下即可,将s==-1转为1s==0转化为m/v(最大可能装下的货物);

 二进制优化的精髓就在于选择物品的次数,比如有s==7,我们可以分为1,2 ,4(二进制形式),1就代表选择一个货物,2代表两个,4代表4个,那么s==10时可能会剩个3我们只需要在后边补上即可,每一次选择几个就是几个的价值(4个就是4个的价值)

#include<bits/stdc++.h>
using namespace std;
int v[100010];
int w[100010];
int f[1000010];
int cnt=1;
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        int k=1;
        int a,b,s;
        cin>>a>>b>>s;
        if(s==-1)
        {
            s=1;
        }
        if(s==0)
        {
            s=m/a;
        }
        while(k<=s)
        {
            v[cnt]=a*k;
            w[cnt]=b*k;
            s-=k;
            k*=2;
            cnt++;
        }
        if(s>0)
        {
            v[cnt]=s*a;
            w[cnt]=s*b;
            cnt++;
        }
    }
    for(int i=1;i<=cnt;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;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/815149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP协议+GET/POST区别

1. web开发流程 &#xff08;1&#xff09; HTML、CSS、JS、图片等资源通过浏览器进行整合&#xff0c;最终渲染出所需画面。 &#xff08;2&#xff09;浏览器对Web服务器进行资源请求 浏览器通过url请求资源。【HTTP协议、URL&#xff1a;确定唯一的一个资源】 浏览器请求…

DeepVO 论文阅读

论文信息 题目&#xff1a;DeepVO Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks 作者&#xff1a;Sen Wang, Ronald Clark, Hongkai Wen and Niki Trigoni 代码地址&#xff1a;http://senwang.gitlab.io/DeepVO/ (原作者并没有开源…

驶向专业:嵌入式开发在自动驾驶中的学习之道

导语: 自动驾驶技术在汽车行业中的快速发展为嵌入式开发领域带来了巨大的机遇。作为自动驾驶的核心组成部分&#xff0c;嵌入式开发在驱动汽车的智能化和自主性方面发挥着至关重要的作用。本文将探讨嵌入式开发的学习方向、途径以及未来在自动驾驶领域中的展望。 一、学习方向:…

备战携程面试:Redis Master-Slave异步同步进度独家解析!

Hello 大家好&#xff0c;我是你们的小米&#xff01;今天我要和大家分享一道来自携程的面试题&#xff1a;Redis Master-Slave异步同步的话怎么判断Slave同步进度&#xff1f; Redis&#xff0c;作为一款非常火热的内存数据库&#xff0c;提供了Master-Slave的异步复制机制&a…

什么是嵌入式软件开发?

嵌入式软件一般是在交叉的开发环境下进行的&#xff0c;这样的运行环境能够让软件开发过程中更加稳定、可靠和安全&#xff0c;在很大程度上提升了软件开发的质量和效率&#xff0c;同时也使得软件开发的难度和程度大大降低。 嵌入式软件的交叉开发环境&#xff0c;反映了用于…

【数据结构篇C++实现】- 特殊的线性表 - 串

友情链接&#xff1a;C/C系列系统学习目录 文章目录 串&#x1f680;一、串的定义&#x1f680;二、串的存储结构&#x1f6f4;&#xff08;一&#xff09;串的顺序存储结构1、定长顺序存储表示2、堆分配存储表示 &#x1f6f4;&#xff08;二&#xff09;串的链式存储结构3、块…

ES6 - Iterator迭代器和for...of 循环

文章目录 前言一、Iterator介绍二、Iterator原理三、实现Iterator接口的原生对象有五、默认调用 Iterator 接口的场合六&#xff0c;for... of 循环七&#xff0c;总结 前言 JavaScript 原有的表示“集合”的数据结构&#xff0c;主要是数组&#xff08;Array&#xff09;和对…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第四十二天 42/50【unordered_set】【双指针处理连续】【翻转字符串】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

优思学院|企业遇到瓶颈期怎么办?六西格玛管用吗?

企业遇到瓶颈期应该分析一下原因&#xff0c;企业内部应该和各级一起思考如何解决、如何舒缓&#xff0c;即使找管理咨询公司同样也是这样做的&#xff0c;关键是企业是否连一个领导者也没有呢&#xff1f; 企业每天都会遇到新的问题&#xff0c;是否每次都要找管理咨询公司&a…

第七篇:k8s集群使用helm3安装Prometheus Operator

安装Prometheus Operator 目前网上主要有两种安装方式&#xff0c;分别为&#xff1a;1. 使用kubectl基于manifest进行安装 2. 基于helm3进行安装。第一种方式比较繁琐&#xff0c;需要手动配置yaml文件&#xff0c;特别是需要配置pvc相关内容时&#xff0c;涉及到的yaml文件太…

iOS--frame和bounds

坐标系 首先&#xff0c;我们来看一下iOS特有的坐标系&#xff0c;在iOS坐标系中以左上角为坐标原点&#xff0c;往右为X正方向&#xff0c;往下是Y正方向如下图&#xff1a; bounds和frame都是属于CGRect类型的结构体&#xff0c;系统的定义如下&#xff0c;包含一个CGPoint…

卡片布局 可左右上删除,可向下拉出上一个 支持复用

效果 支持左右上 三个方向删除内容&#xff0c;支持下拉显示上一个。支持adapter 支持复用。 使用 myLayout.setAdapter(new StackAdapter() {final int[] bgColorsnew int[]{Color.RED,Color.GREEN,Color.BLUE};Overridepublic View getView(int position, LayoutInflater …

Docker Hub和镜像仓库

目录 前言 创建存储库 推送镜像&#xff08;可选&#xff09; 搜索镜像 拉取镜像 前言 Docker Hub 是 Docker 公司提供的官方公共 Docker 镜像注册表&#xff0c;允许用户存储、分享和获取 Docker 镜像。在 Docker Hub 上&#xff0c;你可以找到许多官方和社区维护的 D…

三、前端高德地图、测量两个点之前的距离

点击测距工具可以开启测量&#xff0c;再次点击关闭测量&#xff0c;清除地图上的点、连线、文字 再次点击测量工具的时候清除。 首先 上面的功能条河下面的地图我搞成了两个组件&#xff0c;他们作为兄弟组件存在&#xff0c;所以简单用js写了个事件监听触发的对象&#xff…

JavaScript三元运算符

条件运算符&#xff08;三元运算符&#xff09;的基本结构 条件 &#xff1f; true:false例如&#xff1a; const age 20; age > 18 ? console.log("你已经成年了"):console.log("你还是一个孩子&#xff01;");我们这里把条件运算符和IF来做个区分…

高等数学中如何求间断点

高等数学中求间断点是一项重要的技巧&#xff0c;特别适用于分析函数的性质和图像的特征。在本文中&#xff0c;我们将深入探讨如何在给定函数中找到间断点&#xff0c;并解释其数学原理和实际应用。 什么是间断点&#xff1f; 在高等数学中&#xff0c;间断点是指函数在某个点…

Trello的功能、优缺点、国内使用体验,及4大类似的项目工具

1、Trello是什么软件&#xff0c;有哪些功能&#xff1b; 2、Trello的价格及国内用户的使用体验&#xff1b; 3、盘点国内同类型的项目管理软件&#xff1b; 4、对比国内工具Worktile、Teambition等工具如何。 一、Trello是什么软件&#xff0c;有哪些功能&#xff1f; 【官网…

Pytorch 最全入门介绍,Pytorch入门看这一篇就够了

本文通过详细且实践性的方式介绍了 PyTorch 的使用&#xff0c;包括环境安装、基础知识、张量操作、自动求导机制、神经网络创建、数据处理、模型训练、测试以及模型的保存和加载。 1. Pytorch简介 在这一部分&#xff0c;我们将会对Pytorch做一个简单的介绍&#xff0c;包括它…

uniapp打包本地资源使用原生安卓打包

Android安装打包 1. 安装sdk 2.安装解压openjdk到D盘 3.安装编辑器 在D盘新建文件 Androidstudio 将编辑器安装到这个Androidstudio 文件内 配置sdk路径 打包步骤&#xff1a; 1. 打开项目&#xff0c;如图&#xff1a; 2. uniapp的本地打包资源可以在 这里替换apps包下 再修…

java+springboot+mysql疫情物资管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的疫情物资管理系统&#xff0c;系统包含超级管理员&#xff0c;系统管理员、员工角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;部门管理&#xff1b;职位管理&#xff1b;员工管理&…