231123 刷题日报-动态规划

今天主要看了DP,前几天频繁遇到DP打击有点大。。

1. 0-1背包问题

要点:

a. 三部曲:

1. 状态和选择

        状态:物品序号、背包容量

        选择:放、不放

2. dp数组定义、base case

        dp[i][w] 对于前i个物品,当前背包容量是w,这种情况下最大价值是dp[i][w]

        比如dp[3][5] = 6,对于给定的一系列物品中,如果只前3个物品做选择,当背包容量是5时,最多可以装下的价值是6

3.根据【选择】,思考状态转移逻辑

        第i个物品装入背包

                dp[i][w] = dp[i-1][w-wt[i-1]] + value[i-1]

        第i个物品不装入背包

                dp[i][w] = dp[i-1][w]

        注:i表示第i个,所以value[i-1]表示第i个物品价值

2. 0-1背包问题变体: 子集划分

101 分割等和子集

要点:

a. 往01背包上靠:因为要一分为2,所以只考虑一半,另一半自然会满足。即把sum/2看作是背包容量

b. dp[i][sum/2] 表示在容量sum/2的背包下,是否恰好能装满,dp数组装的是 [是否] 不再是 [大小],这也说明dp数组含义非常重要

c. base case要注意:dp[..][0] = true,表示在容量0时,已经装满了

3.回溯和动规谁是谁爹

102 目标和

要点:

1.这题我用回溯从n到-1写的有问题,答案从0到n没有问题,没明白为什么

2.消除重叠子问题:

如何发现重叠子问题?看状态是否可能重复,

备忘录 key处理技巧,拼接字符串一定要加个,

然后dp也是,这个base case好难想啊,是不是划分子集问题的dp[..][0]都是1/true?

我错写成dp[..][0] = 0了,实际dp[..][0] = 1,给的解释居然是 “因为如果背包的最大载重为 0,「什么都不装」就是唯一的一种装法。“

目标和这个题目,用dp写,细节实在太多了

int[]

求和 Arrays.stream(int[]).sum()

求最值 Arrays.stream(int[]).max().asInteger()

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

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

相关文章

安卓现代化开发系列——从生命周期到Lifecycle

由于安卓已经诞生快二十载,其最初的开发思想与现代的开发思想已经大相径庭,特别是Jetpack库诞生之后,项目中存在着新老思想混杂的情况,让许多的新手老手都措手不及,项目大步向屎山迈进。为了解决这个问题,开…

【Axure教程】用中继器制作卡片多条件搜索效果

卡片设计通过提供清晰的信息结构、可视化吸引力、易扩展性和强大的交互性,为用户界面设计带来了许多优势,使得用户能够更轻松地浏览、理解和互动。 那今天就教大家如何用中继器制作卡片的模板,以及完成多条件搜索的效果,我们会以…

YOLOv8训练自己的目标检测数据集

YOLOv8训练自己的目标检测数据集 目录标题 源码下载环境配置安装包训练自己的数据集数据集文件格式数据集文件配置超参数文件配置训练数据集命令行训练脚本.py文件训练 进行detect显示detect的效果 源码下载 YOLOv8官方的GitHub代码,同时上面也有基础环境的配置要…

Android——资源IDnonFinalResIds和“Attribute value must be constant”错误

一、异常描述 通过资源ID引用资源提示错误 Attribute value must be constant 二、解决方案 在根目录下的文件 gradle.properties 中添加如下配置,然后Sync Project android.nonFinalResIdsfalse 三、问题原因 android.nonFinalResIds 是Android开发中一个用于解…

3D火山图绘制教程

一边学习,一边总结,一边分享! 本期教程内容 **注:**本教程详细内容 Volcano3D绘制3D火山图 一、前言 火山图是做差异分析中最常用到的图形,在前面的推文中,我们也推出了好几期火山图的绘制教程&#xff0…

单链表实现【队列】

目录 队列的概念及其结构 队列的实现 数组队列 链式队列 队列的常见接口的实现 主函数Test.c 头文件&函数声明Queue.h 头文件 函数声明 函数实现Queue.c 初始化QueueInit 创建节点Createnode 空间释放QueueDestroy 入队列QueuePush 出队列QueuePop 队头元…

C++每日选择题—Day1

第一题 以下C代码会输出什么? #include <iostream> using namespace std; class A { public:A() {}~A() {} private:static int a; }; int main() {cout << sizeof(A) << endl;return 0; } A&#xff1a;0 B&#xff1a;1 C&#xff1a;4 D&#xff1a;8 答…

【陈老板赠书活动 - 18期】-如何成为架构师这几本书推荐给你

陈老老老板&#x1f9b8; &#x1f468;‍&#x1f4bb;本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f468;‍&am…

微信小程序前端环境搭建

搭建微信小程序前端环境 申请小程序测试账号 访问路径 使用微信扫描二维码进行申请&#xff0c;申请成功之后&#xff0c;进入界面&#xff0c;获取小程序ID(AppID)和秘钥(AppSecret) 安装微信web开发者工具 访问路径 选择稳定开发的版本 需要在小程序的设置中将默认关闭…

微软发布最新.NET 8长期支持版本,云计算、AI应用支持再强化

11 月 15 日开始的为期三天的 .NET Conf 在线活动的开幕日上&#xff0c;.NET 8作为微软的开源跨平台开发平台正式发布。.NET 团队着重强调云、性能、全栈 Blazor、AI 和 .NET MAUI 是.NET 8的主要亮点。.NET团队在 .NET Conf 2023 [1]活动开幕式上表示&#xff1a;“通过这个版…

c++版本opencv计算灰度图像的轮廓点

代码 #include<iostream> #include<opencv.hpp>int main() {std::string imgPath("D:\\prostate_run\\result_US_20230804_141531\\mask\\us\\104.bmp");cv::Mat imgGray cv::imread(imgPath, 0);cv::Mat kernel cv::getStructuringElement(cv::MORPH…

6.1.webrc媒体协商

那今天呢&#xff1f;我们来看一下y8 rtc的媒体协商&#xff0c;那实际上在我们之前的课程中呢&#xff1f;我已经向你介绍过y8 rtc的媒体协商了。只不过呢&#xff0c;角度是不一样的&#xff0c;在之前介绍外边tc媒体协商的时候呢&#xff0c;我们是从应用的角度来看。那web …