
DP
文章平均质量分 73
龙卡卡卡
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
力扣2920 收集所有金币可获得的最大积分
这个操作如果用代码来模拟则会消耗巨大的时间,所以我们考虑能否对这个操作进行记忆化或者说是dp,从而优化时间复杂度。题中的两种收集金币的方式一种会导致收集金币值-k,另一种会导致当前收集金币减半且后续子树上的金币全部减半。最大积分(最优化解)+树形结构 + n~1e5 基本可以确定这道题要么o(n)(贪心,记忆化)要么dp。可以被当成一个维度来构造dp算法(因为10000最多除14次就变成0了)。如果你能观察到上面的洞察点,那么dp就很好解决了,也就是说。这个操作其实执行不了多少次数就会被除没(变成0)。原创 2025-01-27 00:41:46 · 579 阅读 · 0 评论 -
HDU-2196 树形DP学习笔记
树形dp特指在树这种数据结构上进行的DP。由于树本身具有子结构的性质(树和子树),很适合用来做递归和递推,符合dp的性质。树形dp中用的比较多的是dfs算法,需要熟练掌握树的几种表示方法和树的遍历方式。对于一棵有根树,对于给定的边权值(自然数),求距离每一个结点最远的结点的距离。首先考虑一下暴力算法怎么做。暴力算法的做法即 对于每于一个结点,将该结点作为根结点求一次到所有叶子结点的距离,然后取最大值。...原创 2022-07-03 23:18:30 · 354 阅读 · 1 评论 -
蓝桥杯 本质上升序列 动态规划 详解+python代码+答案
题目内容见:https://www.lanqiao.cn/courses/2786/learning/?id=131137C题题目分析这道题,如果要用暴力的方法来做,那么会有太多的组合了(涉及到排列组合的问题,暴力都基本过不去)。所以,比较容易想到的算法是动态规划。如何动态规划呢?在动态规划中,我们每次都是对于一个小的个体来处理,来看它的加入会对结果有什么影响。比如在最长上升子序列中,我们是从前往后,遍历每一个位置的字母(个体),看以它为结尾的最长上升子序列的长度。本题中,其实思路相差不大。我们原创 2022-03-05 10:59:56 · 969 阅读 · 0 评论 -
蓝桥杯 数字三角形 简单dp
题目链接:http://oj.ecustacm.cn/problem.php?id=1526原创 2022-03-03 23:09:59 · 155 阅读 · 0 评论 -
CSP 收集卡牌 状压dp (详细解析)
从状态定义到状态转移以及一些细节方面对本题目进行解析。原创 2022-02-28 15:50:49 · 538 阅读 · 0 评论 -
Flood Fill 区间dp练习
题目链接:https://codeforces.com/contest/1114/problem/D题目大意给予一个长度为n的整数串,起初选取某一个位置,然后某一轮可以将与该位置连通的(连通:相邻且数字相同,连通具有传递性)所有数字全部改为另一个数字。给定整数串,问最少需要多少轮才能是所有数字变为相同的。起始位置可以任选。做法首先,很容易看出来,我们可以先对输入的数组进行压缩,即将相邻的相同的数字压缩成一个数字。(这样问题和原来是等价的)代码如下: int x,cnt=0; for(int i=原创 2021-07-18 16:17:47 · 155 阅读 · 0 评论 -
计蒜客 And and Pair 题解
题目链接分析:(将一个二进制数的每一位111的下标作元素构成一个集合)iii&nnn=iii,那么就是说i中的111是nnn中的子集。iii的个数即为nnn的子集的个数。iii&jjj=000,那么说iii与jjj没有共同位上的111,即交集为空集。故对于一个确定的i>1i>1i>1,j的个数有2m2^{m}2m个(mmm:iii中最高位111后的000的个数)所以可以想到从后往前枚举,即从小到大枚举i的最高位的位数,例如nnn=110101101011010先枚原创 2020-10-02 19:55:41 · 224 阅读 · 0 评论 -
牛客 Drop Voicing LIS
题目链接题目分析:题目给定了一条串,共有两个操作可以执行,并且只有Drop-2会产生花费。这就是说我们只需要把串转换成周期性的1-n就行了(比如:k—n 1—(k-1))。而连续的多个Drop-2操作仅需一个花费,这也就可以看成是一个操作。现在我们可以对串的任意位置做Drop-2操作(因为可以通过Invert操作来将任意的位置变成倒数第二),而我们又能发现,对一个长度为K的连续字串做了Drop-2操作后,该串其实就往右移动了一个单位。反过来看,可以看成该子串的右边第一个元素左移了k个单位。(k可以任意选原创 2020-07-26 15:59:10 · 172 阅读 · 0 评论 -
Two Matchings 动态规划,思维
题目链接题意解析:题中matching指的就是一个逆元为本身的置换,并且要求不能有不变元。这样可知p中的数必定是两两配对的(互相映射),如果p的长度为奇数必定会剩余一个数与自己配对,则无法构成matching,故长度必为偶数。cost中由于i与pi是对称的(如1映射到5时,|a1-a5|与|a5-a1|计算了两次)。所以除2后,cost的含义为每次从a中取两个数,求其差的绝对值。题解:下面的提到的数组都是排好序后的最小的取法:其实我们需要找的就是一个使得cost最小的p和次小的q,显然最小就是原创 2020-07-19 15:14:52 · 269 阅读 · 0 评论