题目大意:每一个城市都有一定的魅力值,然后有一个有向图,根据这个有向图从1到n+1所获得的魅力的最大值,并输出路径(要求只能从编号娇小的城市到编号较大的城市)。 题解:很容易想到最短路+路径纪录。但是感觉有点小题大做了。我开始的方法是dfs+dp,dp[i]表示i的子节点最大的魅力值,但是它给的是一 ...
分类:
其他好文 时间:
2020-03-18 18:27:29
阅读次数:
50
显然DP 与传纸条类似,拆成两个人 方法尽量变简单,即把A出发,B出发合并成两个A出发,两个A同时走,这样可以避免A取完B再取的无法判断的情况 状态转移方程: 1.$x == z \; and \;y == d$,$f[x][y][z][t] = max(f[x 1][y][z 1][t], f[x ...
分类:
其他好文 时间:
2020-03-16 21:45:30
阅读次数:
41
题目大意:一天有h个小时,一个人喜欢睡觉,一共睡n次,每次都睡h个小时,开始时间为0,间隔a[i]或a[i]-1个小时开始睡第i次觉,每天都有一个最好时间区间,问这n次觉,最多有多少次是在最好时间内睡的。 题解:定义状态dp[i][j]为第i次觉是在j时刻睡的,那么状态转移方程dp[i][j]=ma ...
分类:
其他好文 时间:
2020-03-14 11:22:51
阅读次数:
71
很容易想到用DP或记忆化搜索解决。 状态转移方程: dp[i][j] = MAX(dp[i][j] , 1 + dp(neighbor) ) 注意dp[i][j] 先要全部置1 由于记忆化搜索的做法没什么特别的,就是一个dfs+标记数组,就不多写了。 如何DP?这道题显然不能常规的线性DP,因为子问 ...
分类:
其他好文 时间:
2020-03-14 11:19:09
阅读次数:
46
动态规划 分析流程 递推(递归+记忆化) 状态定义 状态转移方程 最优子结构 爬楼梯 题目来源 "LeetCode 70. Climbing Stairs" 解题思路 方法一 定义状态 表示n阶台阶的总走法数,则状态方程为 精简解题 题目 给你一个数组,第i个元素代表某个股票第i天的价格,现在只允许 ...
分类:
其他好文 时间:
2020-03-13 14:35:18
阅读次数:
57
上一篇博客写了分治解法以及为什么要用分治。 分治通过我们对子问题的定义,实例化了我们每一步计算的语义,从而帮助我们找到解空间中的重复结构。 在进行分治时,我们找到了分割问题,并用子问题的解表示问题解的方式,也就是状态转移方程: 整个分治的计算过程分为两个阶段,向下分割问题,向上汇聚子问题的解从而得到 ...
分类:
其他好文 时间:
2020-03-13 01:20:44
阅读次数:
64
dp的基本思想,是把大问题转化成一个个小问题,然后递归解决。 所以本质思想的话还是递归。 dp最重要的是要找到状态转移方程,也就是把大问题化解的过程。 举个例子 一个数字金字塔 1 1 2 2 3 3 2 2 2 4 3 1 3 3 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的 ...
分类:
其他好文 时间:
2020-03-12 20:27:04
阅读次数:
48
转自:labuladong公众号 很多读者反应,就算看了前文 动态规划详解,了解了动态规划的套路,也不会写状态转移方程,没有思路,怎么办?本文就借助「最长递增子序列」来讲一种设计动态规划的通用技巧:数学归纳思想。 最长递增子序列(Longest Increasing Subsequence,简写 L ...
分类:
编程语言 时间:
2020-03-05 01:00:26
阅读次数:
71
在一些动态规划中状态转移方程是这样的: $m[i,j]=\min_{i < k \leq j}\left \{ m[i,k-1]+m[k,j]+c[i,j] \right \}$ 显而易见,这种方法的时间复杂度是$O(n^{3})$,如何去优化呢? 四边形不等式 通过四边形不等式的优化,可以进一步限 ...
分类:
其他好文 时间:
2020-03-01 00:01:50
阅读次数:
72
大型补档计划 "题目链接" 就是把序列分成无数段,每段长度 $ = K$,然后 $[l, r]$ 这段的花费是 $S[r] S[l 1] (r l + 1) a[l]$ (把所有数减成 $a[l]$) 很容易列出状态转移方程: 设 $f[i]$ 为前 i 个分完段的最小花费 $f[i] = f[j] ...