动态规划的时间复杂度优化

作者推荐

视频算法专题

本文涉及知识点

动态规划汇总

优化动态规划的时间复杂度,主要有如下几种:

一,不同的状态表示。

比如:n个人,m顶帽子。
第一种方式:dp[i][mask] ,i表示前i个人已经选择帽子,mask 表示 那些帽子已经选择。 空间复杂度:O(n2m)。
第二种方式:dp[i][mask] ,i表示前i个帽子已经选择,mask表示那些人已经选择。 空间复杂度:O(m22)。
n大,则现在方式一;否则选择方式二。

【状态压缩】【动态规划】【C++算法】1125.最小的必要团队

二,通过优化状态减少状态数

例一

【动态规划】【C++算法】2518. 好分区的数目
num的长度 ∈ \in [1,1000],num[i] ∈ \in [0,106] k ∈ \in [0,1000]。
将num的元素放到两个数组中,两个数组的和都为k。
由于num[i] >=0,所以 数组和已经大于k 的无论如何都不会等于k,抛弃。
dp[k1][k2] 的状态数是固定。
当处理完 n u m [ 0 , i ) 时 , 两个数组的和是固定 ⟺ k 1 + k 2 ≡ ∑ j : 0 i − 1 n u m s [ j ] 当处理完num[0,i)时,两个数组的和是固定 \iff k1+k2 \equiv \sum\Large_{j:0}^{i-1} nums[j] 当处理完num[0,i),两个数组的和是固定k1+k2j:0i1nums[j]
我记录k1或k2就可以了。新问题是k1 可能是5e8。
{ k 1 k 1 < k − m i n ( k 2 , k ) e l s e \begin{cases} k1 & k1 <k \\ -min(k2,k) & else \\ \end{cases} {k1min(k2,k)k1<kelse

例子二

2742. 给墙壁刷油漆
付费工人,各任务用时time[i],免费工人用时1,time.length ∈ \in [1,500]。付费工人用时和必须大于等于免费工人用时。如果分别记录付费工人和免费工人用时,则状态数:500*500。
付费工人用时和必须大于等于免费工人 ⟺ \iff (statu = 付费工人用时 - 免费工人用时) >= 0
statu ∈ \in [-500,500] 可以记录状态的时候+500,解析状态的时候再-500。

三 通过优化转移方程

转移方程主要有两种:
a,枚举前置状态,更新后置状态。除剪枝小幅提升性能外,暂时没发现优化方法。
b,枚举后置状态,通过前置状态计算后置状态。利用前缀和、极值、优先队列(堆)、单调栈(队列、向量)、预处理 等优化。

2617 网格图中最少访问的格子数两种方法:分别用单调栈、优先队列优化
【动态规划】【滑动窗口】【C++算法】 629K 个逆序对数组前缀和
【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II枝小幅提升性能
【动态规划】【C++算法】1563 石子游戏 V极值

四 匹配无限次可以拆分成匹配0次和1次

以通配符为例。
abc 匹配 *
初始匹配长度0
处理* :
长度0的后置状态:*不匹配任何字符,匹配长度0。
长度0的后置状态:*匹配一个字符,匹配长度1。
长度1的后置状态:*不匹配任何字符,匹配长度1。
长度1的后置状态:*匹配一个字符,匹配长度2。
⋮ \quad \quad \vdots
总计: *可以匹配0到无限字符,才可以这样处理。 .只能匹配一个字符不能这样处理。

【动态规划】【字符串】C++算法:正则表达式匹配

【状态压缩】【动态规划】【C++算法】691贴纸拼词
【动态规划】【数学】【C++算法】1449. 数位成本和为目标值的最大数字
【动态规划】【C++算法】2188. 完成比赛的最少时间

五 逆向思考

【动态规划】【 矩阵】【逆向思考】C++算法174地下城游戏
正向思考:要记录进入(r,c)后的健康,还有记录初始健康。比如:路径一: 3 → \rightarrow -2 ,初始只需要1,最终健康2。
路径二: -1 → \rightarrow 4 ,初始要求 2,最终健康度 5。如果终点格是-1,前者能过。 如果是-4,后者能过。前者需要4,才能过。
{ 路径一初始 1 ,路径二初始 2 终点 < − 1 路径一初始 4 ,路径二初始 2 终点 − 4 \begin{cases} 路径一初始1,路径二初始2 & 终点< -1 \\ 路径一初始4,路径二初始2 & 终点-4 \\ \end{cases} {路径一初始1,路径二初始2路径一初始4,路径二初始2终点<1终点4

【动态规划】【C++算法】741摘樱桃

六 去掉重复

【动态规划】C++算法:403.青蛙过河

扩展阅读

视频课程

有效学习:明确的目标 及时的反馈 拉伸区(难度合适),可以先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771

如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

相关

下载

想高屋建瓴的学习算法,请下载《喜缺全书算法册》doc版
https://download.csdn.net/download/he_zhidan/88348653

我想对大家说的话
闻缺陷则喜是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 **C+

+17**
如无特殊说明,本算法用**C++**实现。

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

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

相关文章

再见,Visual Basic——曾经风靡一时的编程语言

2020年3月&#xff0c;微软团队宣布了对Visual Basic&#xff08;VB&#xff09;的“终审判决”&#xff1a;不再进行开发或增加新功能。这意味着曾经风光无限的VB正式退出了历史舞台。 VB是微软推出的首款可视化编程软件&#xff0c;自1991年问世以来&#xff0c;便受到了广大…

国际生物发酵产品技术展2024-齐力控股

参展企业介绍 齐力控股集团凭借在此领域多年的生产经验&#xff0c;为客户提供各种优质的产品。齐力控股集团与世界同步的生产宗旨&#xff0c;确立完整的角色定位和明确方向&#xff0c;向大众传递本公司的营销特点和服务模式。本公司是一家集科研、生产为一体的现代企业&…

如何进行Appium实现移动端UI自动化测试?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学…

瑞_Redis_Redis客户端

文章目录 1 Redis客户端1.1 Redis命令行客户端1.2 图形化桌面客户端1.2.1 资源准备1.2.2 安装1.2.3 建立连接 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《Redis》的基础篇的Redis客户端章节。由于博主是从B站黑马程序员的《Redis》学习其相关知识&#xff0c;所以本…

Spring11、整合Mybatis

11、整合Mybatis 步骤&#xff1a; 导入相关jar包 junit <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency> mybatis <dependency><groupId>org.my…

Qt QWidget 简约美观的加载动画 第二季

&#x1f603; 第二季来啦 &#x1f603; 简约的加载动画,用于网络查询等耗时操作时给用户的提示. 这是最终效果: 一共只有三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QVBoxLayout> #i…

如何保护企业免受人工智能网络钓鱼攻击

文章目录 前言一、生成式人工智能带来了新的网络安全威胁二、人工智能将使网络钓鱼攻击变得更加危险三、企业如何阻止人工智能驱动的网络钓鱼四、网络钓鱼模拟确保责任感和适应性前言 网络钓鱼是网络犯罪分子社会工程武器库中的超级武器。网络钓鱼尤其危险,因为它是网络犯罪分…

Redis 管道详解

Redis 管道 关键词&#xff1a;Pipeline Pipeline 简介 Redis 是一种基于 C/S 模型以及请求/响应协议的 TCP 服务。通常情况下&#xff0c;一个 Redis 命令的请求、响应遵循以下步骤&#xff1a; 客户端向服务端发送一个查询请求&#xff0c;并监听 Socket 返回&#xff08…

美创科技荣获“2023年网络安全国家标准优秀实践案例”

近日&#xff0c;全国网络安全标准化技术委员会正式公布2023年网络安全国家标准优秀实践案例获奖名单。 杭州美创科技股份有限公司&#xff08;以下简称&#xff1a;美创科技&#xff09;申报的“GB/T 20281-2020《信息安全技术 防火墙安全技术要求和测试评价方法》在政企领域数…

【监督学习之支持向量机(SVM)】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱基本原理支持向量线性SVM与非线性SVM优化问题软间隔与正则化SVM的应用实现 简述概要 了解监督学习-支持向量机&#xff08;SVM&#xff09; 知识图谱 支持向量机&#xff08;Support Vector Machine&…

visual stdio 使用ATL简单使用COM组件

先试用visual stdio创建ATL项目 选择第一个创建ATL简单对象 ProgId也需要添加一下&#xff0c;默认创建完之后添加方法 STDMETHODIMP AddNumber(LONG __num, LONG* result);添加定义 STDMETHODIMP_(HRESULT __stdcall) CATLSimpleObject::AddNumber(LONG __num, LONG* r…

LASSO算法

LASSO (Least Absolute Shrinkage and Selection Operator) 是一种回归分析的方法&#xff0c;它能够同时进行变量选择和正则化&#xff0c;以增强预测准确性和模型的解释性。LASSO通过在损失函数中加入一个L1惩罚项来实现这一点。该惩罚项对系数的绝对值进行约束。 基本概念 …

【深度学习笔记】深度卷积神经网络——AlexNet

深度卷积神经网络&#xff08;AlexNet&#xff09; 在LeNet提出后&#xff0c;卷积神经网络在计算机视觉和机器学习领域中很有名气。但卷积神经网络并没有主导这些领域。这是因为虽然LeNet在小数据集上取得了很好的效果&#xff0c;但是在更大、更真实的数据集上训练卷积神经网…

数学建模论文、代码百度网盘链接

1.[2018中国大数据年终总决赛冠军] 金融市场板块划分与轮动规律挖掘与可视化问题 2.[2019第九届MathorCup数模二等奖] 数据驱动的城市轨道交通网络优化策略 3.[2019电工杯一等奖] 露天停车场停车位的优化设计 4.[2019数学中国网络数模一等奖] 基于机器学习的保险业数字化变革…

关于timeline的详细解析

关于timeline的详细解析 初始化画布 在echarts中有一个组件叫timeline他与echart中的其他图表结合起来 能很好的展现一段时间内各种数据的变化趋势 接下来我将用官网案例去逐步展示一下关于timeline中的各种详细配置 首先我们创建好vue的组件结构先尝试一些简单的小demo看看…

Spark集群搭建的三种方式详解

国科大学习生活&#xff08;期末复习资料、课程大作业解析、学习文档等&#xff09;: 文章专栏&#xff08;点击跳转&#xff09; 大数据开发学习文档&#xff08;分布式文件系统的实现&#xff0c;大数据生态圈学习文档等&#xff09;: 文章专栏&#xff08;点击跳转&#xff…

交叉编译qt到arm平台

使用pkg-config命令查看xxx包是否存在&#xff1a; pkg-config --print-errors xxx pkg-config的搜索路径可以通过环境变量PKG_CONFIG_PATH指定。需要在运行./configure 之前指定。 ./configure -release -qt-libjpeg -qt-libpng -qt-zlib -qt-pcre -xplatform linux-aarch64-…

CG-0A 电子水尺可实现对水位数据的连续自动监测

CG-0A 电子水尺可实现对水位数据的连续自动监测产品概述 本产品是一种采用微处理器芯片为控制器&#xff0c;内置通讯电路的数字式水位传感器&#xff0c;具备高的可靠性及抗干扰性能。适用于江、河、湖、水库及蓄水池、水渠等处的水位测量使用。 本产品采用了生产工艺技术&…

雾锁王国服务器怎么建?雾锁王国服务器搭建方法

雾锁王国Enshrouded服务器搭建怎么搭建&#xff1f;非常简单&#xff0c;阿里云计算巢雾锁王国程序&#xff0c;可以一键搭建雾锁王国多人联机服务器&#xff0c;腾讯云是基于雾锁王国镜像系统&#xff0c;阿里云服务网aliyunfuwuqi.com汇总雾锁王国服务器搭建&#xff0c;超简…

消息中间件篇之Kafka-高性能设计

一、高性能设计 消息分区&#xff1a;不受单台服务器的限制&#xff0c;可以不受限的处理更多的数据。 顺序读写&#xff1a;磁盘顺序读写&#xff0c;提升读写效率。 页缓存&#xff1a;把磁盘中的数据缓存到内存中&#xff0c;把对磁盘的访问变为对内存的访问。 零拷贝&a…