动态规划专项训练 2
前言
动态规划1不能再写了,再写下去就卡炸了,所以只好新开一个了,这次我要认真分析题目了,而且我这次我要详细地全面分析题目。
题解
P1489 猫狗大战
这种背包题首先需要枚举物品,然后还要枚举容积,同时这题还额外有个要求是人数,所以我们设状态为 \(f_{j,k}\) 前 \(i\) 件物品容量为 \(j\),人数有 \(k\) 个合不合法,最后我们就要枚举容量找到最小的两物品之差且满足 \(f_{i,n/2}=1\)。
P2064 奇妙的汽车
明显的搜索题,但是他的标签是dp,我想了半天发现那是一点都写不了,一看题解清一色的暴搜,赶紧滚吧。
拆公式,这很明显有公式的题先拆公式,
= a(1 + k1 + k2k1 + k3k2k1 ) = a(1 + k1(1 + k2 + k3k2)) = a(1 + k1(1 + k2(1 + k3)))
然后就是递归搜索题。
P5003 跳舞的线 - 乱拐弯
有意义的题但是并不难,2023.8月四中选拔原题,当时连dp是啥都不知道,然后好像当时就暴零了,现在看其实很自然。
想拐弯的话肯定需要记录向下和向右,然后再进行转移,转移也很简单,但要特判起点为#
和起点终点不能拐弯。
P3931 SAC E#1 - 一道难题 Tree
设状态为 \(f_x\) 为以 \(x\) 为根的子树断边最小代价,因为想到肯定有两种断法,这个点的所以子树的边断掉,前往父节点的边断掉,所以就取子树值之和与前往父节点的边权取最小值,这样dp就是对的。
建双向边啊!!
P4677 山区建小学
想简单了,后面的数可能也会去这个学校所以我写的上一个学校在哪的转移不符合了,我们设状态为 \(f_{i,j}\) 为在第i个及之前放学校,已经放j个学校的最小和,我们要枚举上一个放的位置,然后我们还要预处理区间放学校最小路径和,然后就好转移了。
P1004 [NOIP2000 提高组] 方格取数
用最暴力的四维 dp 转移,直觉上肯定两次二维过不了,直接暴力转移即可,有重合就减掉。
P4141 消失之物
全部跑01背包,少哪个物品给他减掉就好了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」