![](https://img-blog.csdnimg.cn/81cd97a9c59449baa250e9e3147fbe52.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划
文章平均质量分 63
学习动态规划的一些笔记和遇到的一些dp问题
surocco
坚定,敬畏,自知。
展开
-
cf1625c Road Optimization
Problem - C - Codeforces题目大意是说在一段长度为l的公路上,有n个站点,每个站点有限速,在站点i到站点i+1的区间上,每公里需要花费a[i]min;现在最多删除k个站点,问走过这条公路的最短时间分析:用d[i]和a[i]分别存放站点位置和限速,dp[i][j]表示前i个站点中经过了j个站点的最小时间(即删除了i-j个站点)可得状态转移方程:dp[x][j + 1] = min(dp[x][j + 1], dp[i][j] + a[i] * (d[x] - d[i]));注意要求最小值原创 2022-07-12 17:48:48 · 273 阅读 · 1 评论 -
牛客小白月赛53 D Breezing
题目链接:D-Breezing_牛客小白月赛53勇敢的牛牛得到了一个数列 B,他认为这个数列不够可爱,于是他决定重新创造一个数列 A,规则如下。现在,我们称数列 A 的可爱值 k 为「数列 A 中相邻两个数差的绝对值的和」,求最大的可爱值。第一行,一个正整数 n(2≤n≤10^5)第二行,n 个正整数,表示数列 B 中的数,每个数在1到10^4之间输出描述:一行,一个非负整数表示最大的可爱值 k。示例1811 45 14 19 1 9 8 10输出149示例原创 2022-07-08 21:24:26 · 311 阅读 · 0 评论 -
换根树形动态规划
距离和分析:对于整个二叉树,我们用 size[i] 表示以 i 号点为根的子树中有多少个点,f[i] 表示考虑以 i 号点为根的子树,i 号点到子树中其他所有点的距离和。现在我们考虑换根,用v[i]表示i点的父亲变成子树的贡献;比如初始情况下,根节点为1,i是其子节点,现在i变为根节点,对于此时节点为1的顶点,现在他是i的儿子,那么此时以1为根的子树的贡献为v[i]=f[1]-f[i]-size[i]+n-size[i]类比到根从x变为它的儿子y; v[y]=v[x]+f[x]-f[y]-size[y]原创 2022-07-08 08:53:07 · 202 阅读 · 0 评论 -
树形动态规划问题
统计人数 dfsbfs没有上司的舞会dfsbfs新的背包 没有上司的舞会2原创 2022-07-06 16:26:44 · 164 阅读 · 0 评论 -
区间动态规划问题
学习动规的第二篇笔记 (≖ᴗ≖)✧要把两堆石子合并成一堆石子,一定存在一个分界线 x,使得两堆石子中的一堆是初始第 1 堆到第 x 堆石子合并得到的结果,另一堆是初始第 x + 1 堆到第 n 堆石子合并得到的结果。那么f[l][r]就等于前一部分合并需要的代价加上后一部分合并需要的代价加上这两部分合并需要的代价,两部分合并需要的代价也就是a[l]到a[r]的总和;然后直接递归处理就可以了可以用前缀和求一下a[l]到a[r]的和,另外,由于f[l][r]在本题中被多次计算,所以要再使用记忆化数组处理原创 2022-07-04 22:39:20 · 160 阅读 · 0 评论 -
cf 1673C Palindrome Basis(dp)
题目链接:Problem - C - Codeforces题意是说给你任意一个数n,用回文数凑出n ,问有多少种凑出n的方法先预处理一下40000以内的回文数,存入vector中剩下的就是一个完全背包模型啦(这篇有讲背包嗷 →动态规划背包问题用dp[i]表示数字i满足条件的拆分数,对于num中的数字v;dp[i]=dp[i]+dp[i-v]...原创 2022-07-04 12:52:01 · 164 阅读 · 0 评论 -
失衡天平(动态规划,dp)
题目描述终于Alice走出了大魔王的陷阱,可是现在傻傻的她忘了带武器了,这可如何是好???这个时候,一个神秘老人走到她面前答应无偿给她武器,但老人有个条件,需要将所选武器分别放在天平的两端,若天平平衡则可以将天平上的所有武器拿走,还好这个天平锈迹斑斑,只要两端重量相差小于等于m就会保持平衡,Alice傻傻的认为越重的武器越好,求Alice最多能拿走的武器总重量。(不限操作次数)输入描述:第一行2个整数 n, m;第二行n个整数x,分别表示n件武器的重量。1 <= n <= 10原创 2022-02-11 14:29:08 · 246 阅读 · 0 评论 -
舔狗舔到最后一无所有(简单dp)
题目描述作为队伍的核心,forever97很受另外两个队友的尊敬。Trote_w每天都要请forever97吃外卖,但很不幸的是宇宙中心forever97所在的学校周围只有3家forever97爱吃的外卖。如果Trote_w给forever97买了别家的外卖,forever97就会大喊“我不吃我不吃”。但是forever97又不喜欢连续三天吃一种外卖。如果Trote_w哪天忘了这件事并且三天给他买了同一家外卖,那么forever97就会把Trote_w的头摁进手机屏幕里。作为Trote_w的好原创 2022-02-11 20:20:40 · 658 阅读 · 0 评论 -
删除子序列(2022牛客寒假算法基础集训营6)(dp)
题目描述给出一个长度为n的字符串S和一个长度为m的不含重复字符的字符串T,每次你可以在S中删除一个等于T的子序列,最多可以删除多少次?如字符串S=ababccd,T=abc,可以选择s1s2s5,s1s2s6,s1s4s5,s1s4s6,s3s4s5,s3s4s6进行删除,删除后分别得到abcd,abcd,bacd,bacd,abcd,abcd。如果删除后得到abcd,则还可以再进行一次删除,最多可以删除2次。输入描述:输入包含TS组测试用例,第一行一个整数TS(1≤TS≤10000)原创 2022-02-12 21:13:43 · 430 阅读 · 0 评论 -
动态规划背包问题
关于背包问题的学习笔记例题:考虑前i个物品,总体积为j时分为两种情况: 第i个物品没取,问题变成了考虑了前 i−1个物品,总体积为j时的情况; 第i个物品取了,问题变成了考虑了前i −1个物品,总体积为j-v[i]时的情况; 状态:用f[i][j]表示考虑了前i个物品,总体积为j时的最大收益。转移: f[i][j]=max(f[i−1][j],f[i−1][j−v[i]]+w[i]),分别对应第i个物品没取和取了两种情况。根据状态转移方程写出了这样的代码:在这个写原创 2022-07-04 10:10:54 · 396 阅读 · 0 评论 -
P1776 宝物筛选(多重背包+二进制优化)
题目描述终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为 WW 的采集车,洞穴里总共有 n 种宝物,每种宝物的价值为 vi,重量为 wi,每种宝物有 mi 件。小 F原创 2022-03-01 20:38:27 · 219 阅读 · 0 评论