首页 > 其他分享 >DP思路及套路积累

DP思路及套路积累

时间:2024-10-25 21:48:37浏览次数:1  
标签:考虑 限制 套路 可以 DP 思路 预处理 dp

多发现题目的性质,从性质上下手

dp转移可以通过更改顺序来消除一些限制

把dp转移需要的条件写进dp状态里

dp的用途是广泛的,包括计数、最优化、可行性等等,其根本就是利用记忆化避免重复计算

  • 看到奇怪的限制应该考虑将其形式化,常规化

  • 看到位运算类的性质可以考虑数位 dp

  • 一个排列的笛卡尔树唯一,因此关于排列的若干个区间最值限制可以考虑计算笛卡尔树的形态
    CF1580B Mathematics Curriculum

  • 如果元素的贡献与区间最小最大值有关,那么考虑使用 min-max分治 ,使每个元素在其左右端点不在同一块的地方被统计,min-max分治 不仅可以计数,也可以求最优化
    P3592 [POI2015] MYJ 【最优化dp】
    CF549F Yura and Developers 【计数】

  • 阶梯型DP优化&pht转化的巧妙运用
    P6944 [ICPC2018 WF]Gem Island

  • 看到要求商最大可以先从 0/1分数规划 开始想,0/1分数规划 不一定仅限于每一个物品才会带来贡献
    P3778 [APIO2017]商旅

  • dp的用途很广,甚至可以用来防止重复比较等,看到题目不会做先想dp
    P6764 [APIO2020]粉刷墙壁

  • DP具有无后效性的体现:构成DP的每一步决策都只与当前的状态有关,不与前后有关,就比如说给一堆限制,然后可以将这堆限制分类,然后每一类DP,保证在符合之前所有类的限制的情况下满足当前这一类的限制,可以看做是一种分部处理“且”限制的手段
    P5369 [PKUSC2018]最大前缀和

  • 考虑生成一个排列的办法:状压目前使用了多少位,枚举下一步拓展谁

  • 树形结构很常见,可以用来dp
    SP3734 PERIODNI - Periodni

  • 对于树上任意非祖先两点的都会对其lca产生限制,就直接按照dfs下去即可,设计状态的时候直接就是f[i]表示以i为根的子树中,本身已经满足限制的状态,合并的时候考虑不同子树对于根的限制即可

  • 最优化dp 转移的决策(转移路径)不一定要存在直接转移,只需要保证存在最优(复合)路径就够了,就是冗余转移优化
    P4762 [CERC2014]Virus synthesis

  • 如果若干个集合两两之间的关系要么包含要么不交,那么集合的包含关系可以构成一棵树
    CF494C Helping People
    P8252 [NOI Online 2022 提高组] 讨论 【神仙lsy的集合划分树】

  • 计数题要考虑如何把问题分组,做到不重不漏,比如可以考虑以最大编号或者最原始祖先来区分等等,就是类似于至少=恰好\(\times\)至少这种,反正选出来的代表要具有 唯一代表性 ,即可以唯一代表一类情况,且分类重不漏
    P7105 「C.E.L.U-01」门禁 【差一点想出来的题】
    CF512D Fox And Travelling【自己想出来的题】

  • 权值是乘在一起然后开根的,可以把开根看做在指数上除,然后就变成分数规划问题

  • dp 的有效状态实际上是很少的,可以利用上
    CF1584F Strange LCS

  • 如果一些情况使得某一位非常小,某一维非常大(只能接受log),那么可以考虑矩阵乘法

  • 01背包的合并具有决策单调性

  • 有些题目不能完全预处理,那么就可以先预处理出能预处理的,然后把不能直接预处理出来的用已经预处理的算出来,差不多就是部分预处理
    P4133 [BJOI2012]最多的方案

  • 计数类问题考虑加乘法原理
    P5664 [CSP-S2019] Emiya 家今天的饭

  • 背包问题决策具有无向性
    P4095[HEOI2013]Eden 的新背包问题

正着做一次,倒着做一次,之后因为无向性就可以把正着做和倒着做的结果合并!!

  • 背包问题中交换物品的顺序对结果不影响
    P4141 消失之物

  • 对于要求元素不重复的dp,设计状态时可以考虑一个一个的插入元素,过程类似背包

  • 计数dp在设计状态的过程其实是在把情况分类的过程,要注意分类的情况之间相互不包含或重叠,以免在统计时把部分情况算重

  • 在让gcd最大的问题里的一种dp的阶段性:把最大的质数作为阶段来拓展

  • 多个模式串匹配且长度不定的dp可以把模式串放到AC自动机上,接着dp状态就转变成匹配到AC自动机上的某个点时的状态

  • 对于dp中的序列问题,如果每个元素的贡献只与其相对的大小关系有关,那么可以把元素换成康托序,同时一个排列与康托序是一一对应的
    CF1542E1 Abnormal Permutation Pairs (easy version)

标签:考虑,限制,套路,可以,DP,思路,预处理,dp
From: https://www.cnblogs.com/chenhx-xcpc/p/18503329

相关文章

  • 巧妙的dp优化方法
    \(\color{green}\textbf{[记录一种巧妙的dp优化方法]}\)这是一种巧妙的优化状态的方法,通过把状态提前(或者说是把状态转化为限制)的方法来避免记录一些别的信息,这种优化方法相比起数据结构优化更加强大,故作文记之\(\color{blue}\textbf{[例题]}\)CF1679ETypicalPartyinDorm......
  • E71 树形DP+二分 P3523 [POI2011] DYN-Dynamite
    视频链接:   P3523[POI2011]DYN-Dynamite-洛谷|计算机科学教育新生态//树形DP+二分O(nlogn)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;intread(){intx=0,f=1;charc=getchar();while(c>'9'||c......
  • 2024 年 MathorCup 数学应用挑战赛——大数据竞赛 赛道 A:台风的分类与预测 思路和代码
                       问题1:台风分类模型问题2:台风路径预测模型问题3:台风登陆后降水量与风速关系模型总结该题目分为三个主要问题,分别要求构建台风的分类模型、路径预测模型和降水风速模型。为了完成此任务,我们将运用大数据分析和机器学习建模技术,并......
  • 2024 年 MathorCup 数学应用挑战赛——大数据竞赛 赛道 B:电商品类货量预测及品类分仓
    2024年所有数学建模类比赛的个人思路和代码都会发布到专栏内,会结合最新的chatgpt发布思路,开赛一天后恢复原价99,不代写论文,不回复私信.没有群,只需订阅一次目录问题分析与解决思路问题1:货量预测模型问题2:一品一仓分仓规划问题3:一品多仓分仓规划总结这类大数据竞赛......
  • 数位DP
    不得不说,数位DP是我掌握的最不好的一个板块。其实数位DP还挺好理解的,状态设计也一目了然,但是请小心前导零。从数位DP最基础的模版题:windy数开始做起P2657[SCOI2009]windy数题意:不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。windy想知道,在a和b之......
  • wordpress接入腾讯云COS,50G月免费流量
    对象存储COS是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持HTTP/HTTPS协议访问的分布式存储服务。腾讯云COS的存储桶空间无容量上限,无需分区管理,适用于CDN数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景,适用于网站需要实时访问、频繁访......
  • 【2024有效】WordPress忘记密码找回登录密码的最简单有效的方法
    这个找回Wordpress后台密码密的方法,前提是,可以操作数据。 最近忘记了极客侠网站登陆密码,还是按照以前的方法,进入数据库直接修改数据库,但是现在wordpress密码的加密不是简单的MD5所以不能用一个md5加密好的密码去替换数据库,这里的关键所在就是不知道现在的加密方式,于是又百......
  • 网络协议基础(2):socket套接字及TCP、UDP的实现
    socket套接字及TCP、UDP的实现socket套接字socket的基本概念socket的类型Socket的工作流程Socket的编程接口(C++示例)1.创建Socket2.绑定地址3.监听连接4.接受连接5.连接到服务器6.发送数据7.接收数据8.关闭Socketsocket相关的结构体sockaddr结构体sockaddr......
  • C# UDP组播客户端【UDPClient】
    方式一UdpClientudp=newUdpClient(5566);//要通过其进行通信的本地端口号。5566是源端口udp.JoinMulticastGroup(IPAddress.Parse("224.0.0.4"));//将UdpClient添加到多播组;IPAddress.Parse将IP地址字符串转换为IPAddress实例IPEndPointmu......
  • C# UDP广播启动服务和客户端【Socket】
    服务端:Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);//初始化一个Scoket协议IPEndPointiep=newIPEndPoint(IPAddress.Any,9095);//初始化一个侦听局域网内部所有IP和指定端口EndPointe......