今日总结2024/5/13

今日学习了01背包求具体方案的方法

Acwing.12 背包问题求具体方案

由于背包是从小到大枚举物品,只能从后往前判断是从哪个状态递推过来的,而该题要求按字典序顺序输出字典序最小的最优方案

因此要将物品从大到小枚举,判断时从小到大判断是从哪个状态递推过来的即可

#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e3+5;
int v[N],w[N];
int f[N][N];int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n,m;cin>>n>>m;for(int i=1;i<=n;i++) cin>>v[i]>>w[i];for(int i=n;i;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]);}int tag=m;for(int i=1;i<=n;i++)if(f[i][tag]==f[i+1][tag-v[i]]+w[i]){//选他的方案if(tag<v[i]) continue;//体积比v[i]小的不能选cout<<i<<' ';tag-=v[i];}return 0;
}
P2066 机器分配

总公司拥有高效设备 M 台,准备分给下属的N 个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M 台设备才能使国家得到的盈利最大?求出最大盈利值。其中 M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数 M。

输入格式

第一行有两个数,第一个数是分公司数 N,第二个数是设备台数 M。

接下来是一个 N×M 的矩阵,表明了第 i 个公司分配 j 台机器的盈利。

输出格式

第一行为最大盈利值。

接下来 N 行为第 𝑖 分公司分 x 台。

P.S. 要求答案的字典序最小。

思路

把公司看成分组背包里的每一组,每组选的个数看成体积,存的是最大价值

因此可以把该题看成是分组背包问题

最后更据结果倒退得到路径输出即可

90PTS,应该是哪个字典序出现问题了

#include <iostream>
#include <algorithm>
using namespace std;
const int N=16;
int a[N][N],f[N][N];//f[i,j]表示选到第i个公司,设备总数不超过j的盈利最大值
int way[N];int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n,m;cin>>n>>m;//公司数,设备台数for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=0;k<=j;k++)//选几台f[i][j]=max(f[i][j],f[i-1][j-k]+a[i][k]);int k=m;for(int i=n;i;i--)for(int j=0;j<=k;j++)//枚举上一层是选几个推过来的if(f[i][k]==f[i-1][k-j]+a[i][j]){way[i]=j;k-=j;break;}cout<<f[n][m]<<'\n';for(int i=1;i<=n;i++)cout<<i<<' '<<way[i]<<'\n';return 0;
}

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

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

相关文章

在Windows上有哪些好用的网络抓包工具?

2024年5月12日&#xff0c;周日上午 在Windows上&#xff0c;有多种好用的网络抓包工具&#xff0c;以下是一些常见的选项&#xff1a; Wireshark&#xff1a; Wireshark 是一款功能强大的网络协议分析工具&#xff0c;它可以捕获并分析计算机网络上的数据包。它支持广泛的协议…

ssm+vue的公务用车管理智慧云服务监管平台查询统计(有报告)。Javaee项目,ssm vue前后端分离项目

演示视频&#xff1a; ssmvue的公务用车管理智慧云服务监管平台查询统计&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&…

求阶乘n!末尾0的个数溢出了怎么办

小林最近遇到一个问题&#xff1a;“对于任意给定的一个正整数n&#xff0c;统计其阶乘n&#xff01;的末尾中0的个数”&#xff0c;这个问题究竟该如何解决&#xff1f; 先用n5来解决这个问题。n的阶乘即n!5!5*4*3*2*1120&#xff0c;显然应该为2个数相乘等于10才能得到一个结…

软件测试自动化:加速测试,提升效率

目录 测试自动化的内涵 测试自动化的原理 测试工具的分类和选择 自动化测试的引入 在当今的软件开发中&#xff0c;测试自动化已经成为提升效率和确保软件质量的关键环节。测试自动化是指使用软件工具和脚本来执行重复的测试任务&#xff0c;从而减轻人工测试的负担&#x…

量化交易包含些什么?

我们讲过许多关于量化交易的内容&#xff0c;但是量化交易具体可以做些什么&#xff1f;很多朋友都还不清楚&#xff0c;我们详细来探讨下&#xff01; 第一&#xff1a;什么是量化交易&#xff1f; 量化交易是一种利用先进的数学模型和计算机技术&#xff0c;从大量的历史数…

制造业精益生产KPI和智慧供应链管理方案和实践案例分享

随着工业4.0的推进和国家对制造业高质量发展的重视&#xff0c;工业数据已跃升为生产经营活动中不可或缺的核心要素&#xff0c;同时&#xff0c;工业数据也是形成新质生产力的优质生产要素&#xff0c;助力企业实现高效精益生产。 工业数据在制造业中的作用不可忽视&#xff…

常见地图坐标系间的转换算法JavaScript实现

文章目录 🍉 不同的地图厂商使用不同的坐标系来表示地理位置。以下简述:🍉 前置常量和方法:🍉 BD-09转GCJ-02(百度转谷歌、高德)🍉 GCJ-02转BD-09(谷歌、高德转百度)🍉 WGS84转GCJ-02(WGS84转谷歌、高德)🍉 GCJ-02转WGS84(谷歌、高德转WGS84)🍉 BD-09转wgs84坐…

Linux: 默认进程介绍

进程名称介绍systemdSystemd 可以管理所有系统资源。不同的资源统称为 Unit&#xff08;单位&#xff09;。 Unit 一共分成12种。 systemctl list-units命令可以查看当前系统的所有 Unitkthreaddkthreadd进程由idle通过kernel_thread创建&#xff0c;并始终运行在内核空间, 负责…

H5利用微信开放标签唤起用户手机APP

APP壳子分享网页到微信&#xff0c;被分享人在微信打开网页后&#xff0c;利用公众号配置微信开放标签[wx-open-launch-app]&#xff0c;实现唤起APP 一、Vue2.x&#xff08;2.6.11&#xff09; 1. main.js // main.jsimport Vue from vue;Vue.config.ignoredElements [wx-o…

Hbase基础操作Demo(Java版)

一、前置条件 HBase服务&#xff1a;【快捷部署】023_HBase&#xff08;2.3.6&#xff09;开发环境&#xff1a;Java&#xff08;1.8&#xff09;、Maven&#xff08;3&#xff09;、IDE&#xff08;Idea 或 Eclipse&#xff09; 二、相关代码 代码结构如上图中①和② pom.x…

IO—消息队列+管道

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式: 当键盘按ctrlc的时候&#xff0c;切换消息读取方式&#xff0c;一般情况为读取指定编号的消息&#xff0c;按ctr1c之后&#xff0c;指定的编号不读取&#xff0c;读取其他所有编号的消息 wftok.c …

vue项目中使用websocke即时通讯实现系统公告实时获取并提醒

一、使用场景 发布者设置需要发布的公告内容、公告接收用户和发布时间&#xff0c;到达发布时间时及时通知提醒已登录系统用户&#xff0c;使用websocke来实现前端与服务器保持长连接&#xff0c;以便实时过去公告信息。 WebSocket是一种在单个TCP连接上进行全双工通信的协议…

调用Mertc的接口

概述 metaRTC5.0版本 API进行了重构&#xff0c;本篇文章将介绍webrtc传输调用流程和例子。 metaRTC5.0版本提供了C和纯C两种接口。 ICE设置 iceCandidateType参数可以在配置文件yang_config.ini中配置&#xff0c;也可以在程序中赋值。 iceCandidateType0 //0:host 1:stun 2…

2024最新大厂C++面试真题合集,大厂面试百日冲刺 bay9

腾讯实习 指针常量和常量指针 常量指针&#xff08;const Type* ptr&#xff09;&#xff1a;指针指向的内容不能被改变&#xff0c;但指针本身可以改变指向。 指针常量&#xff08;Type* const ptr&#xff09;&#xff1a;指针自身的值即内存地址不能改变&#xff0c;但指向…

draw.io 网页版二次开发(1):源码下载和环境搭建

目录 一 说明 二 源码地址以及下载 三 开发环境搭建 1. 前端工程地址 2. 配置开发环境 &#xff08;1&#xff09;安装 node.js &#xff08;2&#xff09;安装 serve 服务器 3. 运行 四 最后 一 说明 应公司项目要求&#xff0c;需要对draw.io进行二次开发&…

电商后台的秘密:通过API接口提取商品信息

在电子商务的运营中&#xff0c;后台管理是核心环节&#xff0c;而API接口则是高效管理商品信息的关键。API允许商家直接与电商平台的数据库进行交互&#xff0c;实现数据的自动化提取和更新。 一、电商后台管理的核心作用 电商后台管理系统是商家进行商品展示、订单处理、库…

存储过程、触发器和函数

存储过程、触发器和函数在数据库中具有重要的作用&#xff0c;它们可以带来以下几个方面的重要性&#xff1a; 数据一致性和完整性&#xff1a; 触发器和存储过程可以用于实现数据一致性和完整性约束。通过在数据库操作&#xff08;如插入、更新、删除&#xff09;发生时自动执…

盛最多水的容器(双指针)

解题思路&#xff1a; 1&#xff0c;暴力解法&#xff08;超时&#xff09; 我们可以使用两层for循环进行遍历。找到那个最大的面积即可&#xff0c;这里我就不写代码了&#xff0c;因为写了也是超时。 2&#xff0c;双指针法 先定义两个指针一个在最左端&#xff0c;一个在…

C++ 派生类的引入与特性

一 继承与派生 从上面的例子可以看出&#xff1a; 继承&#xff1a;一旦指定了某种事物父代的本质特征&#xff0c;那么它的子代将会自动具有哪些性质。这就是一种朴素的可重用的概念。 派生&#xff1a;而且子代可以拥有父代没有的特性&#xff0c;这是可扩充的概念。 1 C 的…

Today At Apple 2024.04.15 Phone15 入门

官网&#xff1a; https://www.apple.com/today/Apple 亚洲第一大商店&#xff1a;Apple 静安零售店现已在上海开幕如下预约课程&#xff1a;下载 Apple Store&#xff08;不是app store&#xff09;&#xff0c;点击课程预约笔记&#xff1a;Today At Apple Notes果粉加群 &am…