[TOC] 第一讲 01背包 01背包是每种武平只能选择一次,计算出最大价值的问题,先上01背包的状态转移方程: $$ f[i][v]=max\{f[i 1][v],f[i 1][v c[i]]+w[i]\} $$ 下面来解释一下这个状态转移方程: 这个方程非常重要,基本上所有跟背包相关的问题的方程 ...
分类:
其他好文 时间:
2020-02-02 23:39:27
阅读次数:
76
1、买卖股票的最佳时机 I 注意:只能买卖一次股票,求最大利润 思路:需要找出给定数组中两个数字之间的最大差值(即,最大利润)。此外,第二个数字(卖出价格)必须大于第一个数字(买入价格)。 状态转移方程:res = max(res, prices[i] - minpri);,res为前i天的最大收益 ...
分类:
其他好文 时间:
2020-02-02 19:53:38
阅读次数:
91
树的直径 [TOC] 定义:树的直径为树中最远的两个节点的距离之和。在求树的直径时一般有两种方法:树形dp或则两个BFS(DFS也可以)。 1.树形dp求解树的直径 思路:由树的直径定义可知:其树形dp的状态转移方程为: $$ D[x]=max(D[y_i]+Edge(x_i,y_i)) $$ 其中 ...
分类:
其他好文 时间:
2020-02-02 15:30:26
阅读次数:
75
【思路】 我们 dp[i][j] 来表示合并第 i 堆到第 j 堆石子的最小代价。 那么状态转移方程为 dp[i][j] = min ( dp[i][j],dp[i][k]+dp[k+1][j]+w[i][j]); 其中, w[i][j] 表示把两部分合并起来的代价,即从第 i 堆到第 j 堆石子个 ...
分类:
其他好文 时间:
2020-02-02 11:35:27
阅读次数:
46
题目大意: 这个问题和 01背包 问题很相似,我们也可以依然采取 01背包 的状态定义 dp[i][j] 代表前 i 个物品 容量为 j 的背包的最大价值 那么状态转移方程也就出来了: dp[i][j] = max(dp[i][j],dp[i-1][j-k*v[i]]+w[i]) (k 可以为 0, ...
分类:
其他好文 时间:
2020-02-01 23:34:33
阅读次数:
68
最大连续和:给出一段序列,选出其中连续且非空的一段使得这段和最大。 stdin: 2 -4 3 -1 2 -4 3 stdout: 4 状态转移方程:dp[i]=max(dp[i-1]+a[i],a[i]) 如果dp(i-1)已经为负数,那么前i-1段就没有意义了,我们直接从a[i]重新开始取。 # ...
分类:
其他好文 时间:
2020-02-01 19:13:03
阅读次数:
57
题目描述: 题解:二维动态规划,状态为天数以及依次完成的任务数。注意题目给出的限制,任务需要依次执行,这为构造状态转移方程提供了先决条件。 定义dp[i][j]表示i天完成前j个任务的最小难度。状态转移的时候,遍历第i个可能完成的所有工作并取最小值就可以了,记dis[i][j]为第i个job至第j个 ...
分类:
其他好文 时间:
2020-01-28 18:58:09
阅读次数:
82
/*题都是有一个状态转移方程式 , 只要推出方程式就问题不大了,首 先对于gameboy来说他下一秒只能 在0~10这十一个位置移动, 而对于1~9这九个位置来说他可以移动(假设他现在的位置为x)到x+1,或者x-1,或者x; 0和10这两个位置只有两个位置可以移动, 可以用dp[t][x],t秒的 ...
分类:
其他好文 时间:
2020-01-28 17:42:43
阅读次数:
88
裸的DP,难度标签要改 用$f[i][j]$ 表示前$i$种花且第$i$种花选第$j$个花盆的最优解 用$a[i][j]$ 表示第$i$种花选第$j$个花盆的美学值的话 状态转移方程: $f[i][j] = max(f[i 1][k](k using namespace std; char ch; ...
分类:
其他好文 时间:
2020-01-27 13:45:21
阅读次数:
50
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 来源:https://leetcode-cn.com/problems/maximum-subarray/solution/ 法一:动态规划 思路:关键是要正确的写出状态转移方程.dp[i] ...
分类:
其他好文 时间:
2020-01-22 13:15:57
阅读次数:
65