代码随想录训练营第36天|二维背包

1049. 最后一块石头的重量 II

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int sum=accumulate(stones.begin(),stones.end(),0);int target=sum/2;vector<int> dp(target+1,0);for(auto& stone: stones){for(int i=target; i>=stone; i--){dp[i]=max(dp[i],dp[i-stone]+stone);}}return sum-2*dp[target];}
};

dp[i]:容量为i的背包所能装载的最大价值(重量)

转移方程:尝试所有可能得石头,它占据空间stone,同时带来价值stone,累计最大。

注意细节:target是向下取整得到,所以是较小的那部分,剩余的部分做被减数。

494. 目标和

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int sum=accumulate(nums.begin(),nums.end(),0);if((sum-target)%2==1)return 0;if(target>sum)return 0;int negative=(sum-target)/2;vector<int> dp(negative+1,0);dp[0]=1;for(auto& num: nums){for(int i=negative; i>=num; i--){dp[i]+=dp[i-num];}}return dp[negative];}
};

假定选择一部分元素形成negative集合,在其之前添加负号满足要求,那么有:

(sum-negative)-negative=target

从而可得:negative=(sum-target)/2

题目转化为,求解和为negative的子集方案数,利用动态规划求解:

dp[i]:和为i的子集方案数

初始化dp[0]=1,表示和为0的方案数为1,即空集:一个都不选也是一种方案。

转移方程:dp[i]+=dp[i-num];

表示dp[i]可由任一个num转移而来,则要求转移前的和为i-num,对应的方案数dp[i-num],累加所有的可能得到总的方案数。

474. 一和零

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m+1,vector<int>(n+1,0));for(auto& str: strs){int zero_num=0, one_num=0;for(auto&c :str){if(c=='0')zero_num++;elseone_num++;}for(int i=m; i>=zero_num; i--){for(int j=n; j>=one_num; j--){dp[i][j]=max(dp[i][j],dp[i-zero_num][j-one_num]+1);}}}return dp[m][n];}
};

dp[i][j]:0最大i个,1最大j个的最大子集中的元素数目。

转移方程:尝试用所有str刷新“滚动数组”,先统计该str的01分布,使用该str,则dp[i][j]将由dp[i-zero_num][j-one_num]转移而来,累计最大值。

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

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

相关文章

Ansible——Playbook基本功能

文章目录 一、Ansible Playbook介绍1、Playbook的简单组成1&#xff09;“play”2&#xff09;“task”3&#xff09;“playbook” 2、Playbook与ad-hoc简单对比区别联系 3、YAML文件语法&#xff1a;1. 基本结构2. 数据类型3. 列表4. 字典&#xff08;映射&#xff09;5. 注释…

免费表格图片识别成表格小工具

自动提取图片中的文字&#xff0c;并按照表格的格式整理好 需要的自取吧&#xff0c;下载地址&#xff1a;https://pan.quark.cn/s/f4b1ac62b808

问题:博途与kepserver通讯,kepserver读取变量数为啥对不上呢

回答&#xff1a; 1500中该变量为浮点数&#xff0c;在kepserver选择成DWORD当DINT显示了&#xff0c;将数据类型设成与1500一致。 #PLC##西门子工业支持中心##西门子##博途#工控人加入PLC工业自动化精英社群

C#图像爬虫实战:从Walmart网站下载图片

无论是电子商务网站、社交媒体平台还是新闻门户&#xff0c;图像都扮演着至关重要的角色。对于开发者来说&#xff0c;能够自动化地从这些网站下载图片是一项非常有用的技能。本文将介绍如何使用C#语言和CsQuery库来创建一个图像爬虫&#xff0c;专门用于从Walmart网站下载图片…

牛客周赛 Round 59(思维、构造、数论)

文章目录 牛客周赛 Round 59(思维、构造、数论)A. TDB. 你好&#xff0c;这里是牛客竞赛C. 逆序数&#xff08;思维&#xff09;D. 构造mex&#xff08;构造&#xff09;E. 小红的X型矩阵F. 小红的数组回文值&#xff08;数论、范德蒙恒等式&#xff09; 牛客周赛 Round 59(思维…

数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)

注&#xff1a; 资料都是基于网上一些博客分享和自己学习整理而成的 Verilog 1. 数据类型 Verilog一共有19种数据类型 基础四种数据类型&#xff1a;reg型&#xff0c;wire型&#xff0c;integer型&#xff0c;parameter型 reg型   reg类型是寄存器数据类型的关键字。寄存…

新手学习Python第十一天,准备今天全部学完系列

——早上07&#xff1a;30到达实验室&#xff0c;开始学习&#xff0c;中秋小长假已过&#xff0c;心已收—— 一、__new__与__init__创建对象的过程 class Person(object):def __new__(cls,*args,**kwargs): *表示位置参数&#xff0c;**表示关键字参数print(__new__被调用…

快来尝尝,超赞的食家巷一窝丝

一窝丝&#xff0c;这个名字听起来就充满了诗意和神秘。当你第一次见到它时&#xff0c;定会被它那精致的外形所吸引。纤细如丝&#xff0c;盘绕在一起&#xff0c;宛如一个精美的艺术品。那丝丝缕缕&#xff0c;散发着淡淡的麦香味&#xff0c;仿佛在诉说着古老的故事。 制作食…

Imagen论文简要解析

Imagen论文简要解析 文章 Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding 具有深度语言理解能力的逼真文本到图像扩散模型 https://arxiv.org/pdf/2205.11487 摘要 文章介绍了一种名为Imagen的文本到图像扩散模型&#xff0c;该模型在理…

9.12日常记录

1.extern关键字 1&#xff09;诞生动机:在一个C语言项目中&#xff0c;需要再多个文件中使用同一全局变量或是函数&#xff0c;那么就需要在这些文件中再声明一遍 2&#xff09;用于声明在其他地方定义的一个变量或是函数&#xff0c;在当前位置只是声明&#xff0c;告诉编译器…

【鸿蒙 HarmonyOS NEXT】popup弹窗

一、背景 给组件绑定popup弹窗&#xff0c;并设置弹窗内容&#xff0c;交互逻辑和显示状态。 常见场景&#xff1a;点击按钮弹出popup弹窗&#xff0c;并对弹窗的内容进行交互逻辑处理&#xff0c;如&#xff1a;弹窗内点击跳转到其他页面 二、给组件绑定Popup弹窗 PopupOp…

【Python报错已解决】 TypeError: Descriptors cannot not be created directly

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Android RecycleView 深度解析与面试题梳理

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 引言 在 Android 开发中&#xff0c;列表和网格布局是非常常见的界面元素&#xff0c;它们用于展示大量数据集合。RecyclerView 是 Android 提…

深度学习|损失函数:网络参数优化基准

文章目录 引言均方误差计算示例矩阵形式代码实现 交叉熵误差计算示例代码实现 绝对误差计算示例代码实现 Hinge Loss计算示例代码实现 Kullback-Leibler Divergence计算示例代码实现 结语 引言 在上文「深度学习&#xff5c;模型训练&#xff1a;手写 SimpleNet」中&#xff0…

Nodejs+vue+Express游戏分享网站的设计与实现 7a2s2

目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式&#xff0c;开发软件有很多种可以用&#xff0c;本次开发用到的软件是vscode&#xff0c;用到的数据库是…

Flink垃圾图片分类优胜奖比赛攻略_贪吃的小香猪-148队

关联比赛: Apache Flink极客挑战赛——垃圾图片分类 一. 赛题背景分析及理解 本次竞赛要求结合大数据计算引擎Flink和深度学习的计算平台Intel Analytics Zoo应用在图片识别场景&#xff0c;进行垃圾图片的分类。 目标&#xff1a;对提供的100类大约6000张垃圾图片进行模型训…

五星级可视化页面(30):本系列最后一期,压轴出场。

不知不觉分享了30期高品质的五星级可视化大屏界面&#xff0c;该系列文章也该收尾了&#xff0c;本期为大家分享最后一批界面&#xff0c;我们下一个系列专辑见。

A股上市公司企业创新能力、质量、效率-原始数据+dofile+结果(2006-2023年)

上市公司的创新能力体现在其不断研发新技术、新产品和服务的能力上&#xff0c;这是企业保持竞争优势的关键&#xff1b;质量则是指公司所提供的产品或服务达到高标准的程度&#xff0c;高质量是赢得客户信任和市场份额的基础&#xff1b;效率则涵盖了生产运营中的资源利用程度…

智能车镜头组入门(一)车模的选择

这篇文章&#xff0c;我会简单的介绍下车模的、轮胎和负压的选择 今年的镜头组是自制车模&#xff0c;这比较考验学校之前参赛的经验。我们选择了某飞的mini车模。提供智能车方案的无非就两家&#xff0c;某飞和某邱&#xff0c;我们学校之前都用的是某飞的&#xff0c;在某飞…

鸿蒙Harmony应用开发,数据驾驶舱 项目结构搭建

对于一个项目而言&#xff0c;在拿到我们的开发任务后&#xff0c;我们最重要的就是技术的选型。选型定下来了之后我们便开始脚手架的搭建&#xff0c;然后开始撸代码&#xff0c;开搞. 首先我们需要对一些常见依赖库的引入 我们需要再oh-package.json5的dependencies节点下面…