![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
dp
动态规划
cqbz_lanziming
这个作者很懒,什么都没留下…
展开
-
「总结」树形DP
什么是树形DP?概念:给定一棵有N个节点的树(通常是无根树,也就是有N-1条无向边),我们可以任选一个节点为根节点,从而定义出每个节点的深度和每棵子树的根。在树上设计动态规划算法时,一般就以节点从深到浅(子树从小到大)的顺序作为DP的“阶段”。DP的状态表示中,第一维通常是节点编号(代表以该节点为根的子树)。大多数时候,我们采用递归的方式实现树形动态规划。对于每个节点x,先递归在它的每个子节点上进行DP,在回溯时,从子节点向节点x进行状态转移。如何树形DP?树形DP一般可以解决三类问题:原创 2020-10-04 14:48:10 · 1939 阅读 · 4 评论 -
【题解】区间DP之 分离与合体 (详细分析)
题目描述经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发生分离,从而分离为两个小原创 2020-07-20 16:41:29 · 219 阅读 · 0 评论 -
字符串、区间DP之 删除字符串、最长回文串、乘积最大(详细分析)
①删除字符串题目描述题目描述给出一个长度为n的字符串,每次可以删除一个字母相同的子串,问最少需要删多少次。 数据规模:n <= 500输入格式第1行:1个整数,表示字符串的长度第2行:n个字符的字符串输出格式第1行:1个整数,表示答案样例样例输入5abaca样例输出3算法分析此题即为典型的区间DP题,根据题目可以设以 dp[l,r]是为 l 到 r区间删除完字符串的最小次数,可分两种情况讨论:一般情况下,dp[l,r]由长度可以通过 dp[l+1,原创 2020-07-19 20:42:12 · 1264 阅读 · 2 评论 -
区间DP之 能量项链 (详细分析)
这一题最好先观看 石子合并2题目描述在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m×r×n(Mars单位)原创 2020-07-19 18:49:02 · 292 阅读 · 2 评论 -
DP之 石子合并1、2 (详细分析)
石子合并1题目描述设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;如果第二步是先合并2,3堆,原创 2020-07-18 21:41:41 · 1857 阅读 · 2 评论 -
DP之拦截导弹(详细分析)
第一次写博客,大佬勿喷题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度,计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入格式第1行:依次输入若干个导弹的高度H(1≤H≤30000),导弹的个数N≤5000原创 2020-06-30 13:40:44 · 510 阅读 · 1 评论