首页 > 其他分享 >网课-动态规划学习笔记2

网课-动态规划学习笔记2

时间:2024-08-07 08:56:20浏览次数:12  
标签:状态 复杂度 笔记 网课 搜索 动态 DP 数位

记忆化搜索

记忆化搜索是一种 DP 的实现方法。

相同点:

  • DP 中同一局部问题只计算一次——搜索的记忆化

  • 不处理对答案没有贡献的情况——对应搜索的剪枝

不同点:

  • 遍历顺序优化复杂度。

  • 按数组顺序进行的 DP,经常可以配合一些优化技巧进一步降低复杂度。

“DP 是一种算法,一个工具,而非一种题型。这也是为什么有时候很难分辨一道题要用 DP 还是用贪心,因为你确实很难直接从题面判断要用什么工具。”

“DP 的核心在于设计状态。独立设计一个好的状态可能较为困难,但我们可以根据学过的通用状态进行拓展,得到当前的状态。”


数位 DP

经典数位 DP 的要素:求 l 到 r 之间的符合限制的数的个数(或求和),通常这个限制与数位有关

数位 DP 的主要思想是,把大整数看成一个由 \(0 \sim 9\) 构成的整数序列而不是一个数。并采用序列 DP 的方式,从高位到低位一位一位地 DP。

我之前在 进阶动态规划学习笔记 中写到需要拼凑 + 预处理。实际如果 去掉预处理 一步会更为简单。而且 从高位到低位 会更加简单。

状态大概设计为 \(f[i][j][lim][zero]\),表示第 \(i\) 位为 \(j\)、是否卡上界、前面位是否全为 0。转移从高位到低位,枚举下一位是什么即可。


状压 DP——压缩等价状态

标签:状态,复杂度,笔记,网课,搜索,动态,DP,数位
From: https://www.cnblogs.com/David-Mercury/p/18346339

相关文章

  • LabVIEW的ActorFramework笔记
    1前置知识储备自分布式计算出现以来,业界已经开始广泛研究基于消息传递编程模型的解决方案。关于消息传递,Wikipedia描述其广泛定义主要包括:远程过程调用(RemoteProcedureCalls,RPC)和消息传递接口(MessagePassingInterface,MPI)。但是,如今我们所谈到的消息传递,通常是指acto......
  • 笔记——排列组合
    蓝月の笔记——排列组合篇摘要万恶的数学!Part1加乘原理小学奥数内容加法原理:当多个方案并列(即互不影响)时,总方案数为各个方案数之和例:共有\(k\)种交通工具可以从A地到B地,第\(i\)种交通工具有\(a_i\)班次,那么从A地到B地的总方案数为\(\sum_{1\lei\lek}a_i\)乘......
  • 【论文笔记】Cross-Domain WiFi Sensing with Channel State Information: A Survey
    Cross-DomainWiFiSensingwithChannelStateInformation:ASurveyIntroduction检测领域:检测领域里,大部分用的阈值检测或者简单的学习算法,例如SVM。fallsRT-Fall:Areal-timeandcontactlessfalldetectionsystemwithcommodityWiFidevicesWiFall:Device-fr......
  • jQuery基础学习笔记
    jQuery基础学习个人说明:本文所涉及的到各种jQuery中的函数,方法,api等都不完整,只是一些常用的方法而已,详情还得阅读官方文档中文版:https://www.jquery123.com/jQuery的简单介绍jQuery:是一个快速,小,功能丰富的]avaScript库。它使诸如HTML文档遍历和操作,事件处理、动画和Aja......
  • Python动态规划
    Python动态规划动态规划(DynamicProgramming,简称DP)是解决多阶段决策过程最优化问题的一种方法。动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,......
  • dp学习笔记
    数位dp对于数位上每个数的有约束的各类统计问题,可以考虑用数位dp解决。通常使用记忆化递归实现(更通用),属于比较板子的dp了。在进行记忆化递归时,通常需要考虑三个因素:前导零(有时需要考虑),值域边界限制(必定会有),题面要求限制。例题P2602[ZJOI2010]数字计数版子题,枚举\(0......
  • 动态规划之——背包DP(进阶篇)
    文章目录概要说明多重背包(朴素算法)模板例题思路code多重背包(二进制优化)模板例题思路code多重背包(队列优化)模板例题思路混合背包模板例题思路code1code2二维费用背包模板例题思路code概要说明本文讲多重背包、混合背包以及二维费用背包,至于其他背包问题后续......
  • C++笔记,类和对象(上)
    对于类的初步认识目录对于类的初步认识(1)类的定义(2)类的访问限定符及封装(3)类的作用域(4)类的实例化(5)类的对象大小的计算(6)类成员函数的this指针(1)类的定义classclassName{//类体,由成员函数和成员变量组成};//一定要注意后面的分号类体中内容称为类的成员:类......
  • 【学习笔记】Matlab和python双语言的学习(最大最小化规划)
    文章目录前言一、最大最小化规划二、选址问题三、代码实现----Matlab1.Matlab的`fminimax`函数2.Matlab代码四、代码实现----python总结前言通过模型算法,熟练对Matlab和python的应用。学习视频链接:https://www.bilibili.com/video/BV1EK41187QF?p=28&vd_sour......
  • 动态贝叶斯网络DBN介绍
    动态贝叶斯网络DBN介绍1.引言2.贝叶斯网络与动态贝叶斯网络2.1贝叶斯网络简介2.2动态贝叶斯网络详细介绍2.3两种网络对比3.搭建动态贝叶斯网络的方法3.1定义网络结构3.2参数学习3.3推理3.4结构学习和参数学习的方法3.4.1结构学习3.4.2参数学习4.总结5.......