
4.aoapc2ch9 内容题
文章平均质量分 63
秦始皇吃花椒
这个作者很懒,什么都没留下…
展开
-
[动态规划] NYOJ311 完全背包问题
题目思路1.状态及指标函数:d(S),S->0的最大边权路 2.状态转移方程: d(i)=/left/d[i−Vx]+Wx/right/d(i)=/left/d[i−Vx]+Wx/right/ d(i) = /left/{ d[i-V_x] + W_x /right/} 3.本题NYOJ有点卡常的感觉,记忆化搜索TLE,普通递推TLE,必须把递推的顺序反以下才能AC。...原创 2018-06-20 23:52:35 · 219 阅读 · 0 评论 -
[区间DP] POJ1651 最优矩阵链乘(二分创造最优子结构)
题目思路对于每个表达式,一定有一个“最后一次乘法”,比如 P=A1∗A2∗...∗AkP=A1∗A2∗...∗AkP=A_1 * A_2*...*A_k Q=Ak+1∗Ak+2...∗AnQ=Ak+1∗Ak+2...∗AnQ=A_{k+1}*A_{k+2}...*A_n 由于链乘遵循结合律,所以无论k取在哪,都不会改变最终链乘结果的值(但会改变最优解)。 并且此处的P和Q遵循最...原创 2018-07-06 11:57:59 · 483 阅读 · 0 评论 -
[线性DP] 洛谷P1020 导弹拦截 (模型:LIS最长上升子序列)
题目题目模型 LIS的解法,大体来说有两种:线性DP1.状态定义:d(i),以位置i的元素结尾的LIS长度。 2.初状态:d[1…n] = 1。 3.答案:d[n]。 4.状态转移方程: d(i)=max{1,d(j)+1|j<i,Aj<Ai}d(i)=max{1,d(j)+1|j<i,Aj<Ai}d(i) = max \left\{1, ...原创 2018-07-05 13:54:22 · 250 阅读 · 0 评论 -
[集合DP] 图的色数(高效枚举子集)
题目给一个无向图G,把图中的结点染成尽量少的颜色,使得相邻结点颜色不同。思路1.状态定义:d(S),结点集S染色,所需要的颜色数的最小值。 2.边界:d(0)=0 3.答案:d(S) 4.状态转移方程: d(S)=d(S−S‘)+1,&nbsp;其中S‘是S的子集,并且内部无边d(S)=d(S−S‘)+1,&nbsp;其中S‘是S的子集,并且内部无边d(S) = d(S-S^`...原创 2018-07-10 21:56:13 · 1134 阅读 · 0 评论 -
[集合DP] 货郎担问题 TSP的DP做法
题目 (目前比较流行的说法是叫旅行商问题)思路直接规定起点和终点都是城市0。(原因慢慢想) 1.状态定义:d(i,S),当前处于i城市,还需访问S中的城市各一次最后回到城市0的最短长度。 2.边界:d(i,{}) = dist(0,i) 3.答案:d(0, {1,2,3,…,n-1}) 4.状态转移方程: d(i,S)=min{d(j,S−{j}+dist(i,j)|j...原创 2018-07-10 20:33:07 · 726 阅读 · 0 评论 -
[集合DP] UVa10911 最优配对问题 (复杂状态的DP)
题目思路本题首先想到用多阶段决策来做,d(i)表示前i个点两两配对的最小距离和,然后考虑第i个点的决策。假设它和点j配对(j < i),那么状态就转移成了前i-1个点除了点j两两配对的最小距离和。显然这个“前i-1个点除了点j”难以用一个简单的d(i)表示,所以在此处引入集合表示。 LRJ:当发现状态无法转移后,常见的方法是增加维度,即增加新的因素,更细致地描绘状态。 此...原创 2018-07-10 16:56:39 · 744 阅读 · 1 评论 -
[树上DP] POJ2631 树的最长路径(最远点对)
题目对于一棵n个结点的无根树,找到一条最长路径。换句话说,要找到两个点,使得它们的距离最远。 POJ2631思路和树的重心问题一样,先把无根树转成有根树。对于任意结点i,经过i的最长路就连接i的两棵不同子树u和v的最深叶子的路径。 基本的求法是,先随便找一个点作为根结点转换为无根树后,遍历每一个点,找出当i为根结点时的子树到叶子的最大距离d(j),在根据d(j)求出结点i作...原创 2018-07-10 09:52:37 · 3139 阅读 · 0 评论 -
[树上DP] POJ1655 树的重心(无根树化有向树)
题目思路本题结点太多,所有用邻接表,应该是用vector,但我用惯了set,想一想set多好啊,自然排序去重,咋用都舒服,写成set的邻接表,TLE。。。 换回vector的邻接表,AC。。。 本题大概有这么三个动作: 1.随便找一个结点作为根,并将无根树转换为有向树。 2.d(i)为当i为根结点时的子树的结点个数。 3.通过d(i),找出树的中心。 而3个动作可以一起...原创 2018-07-09 20:57:30 · 318 阅读 · 0 评论 -
[树上DP] 树的最大独立子集
题目思路考虑状态表示,最直接的表示方法是,d(i),根结点为i的数的最大独立子集。但是本题给的是无根树,没关系,边的方向不会影响最大独立子集,所有我们随便选一个结点作为根,建立一个有向树就可以。 而对于结点i,只有两个决策: 1.不选结点i,选上它的儿子们。 2.选结点i,选上它的孙子们。 1.状态定义:d(i,),根结点为i的数的最大独立子集元素个数。 2.初状态:所有...原创 2018-07-09 15:49:36 · 678 阅读 · 1 评论 -
[动态规划] aoapc-ch9 硬币问题 (DAG的不固定起点终点的最长短路)
题目思路DAG的固定起点和终点的最短路和最航路问题。 0.抽象:初始状态为S,末状态为0,每次使用一个硬币,状态由S’变为S’-V[i]。为DAG。 1.状态及指标函数定义:mind[i]:0-&gt;i最短路长度,maxd[i]:0-&gt;i最长路长度。 2.状态转移方程: mind(i)=minmind(i−Vx)+1,x∈[0,n)mind(i)=minmind(i...原创 2018-06-20 00:11:12 · 381 阅读 · 0 评论 -
[动态规划] NYOJ16 矩形嵌套问题 (DAG的不固定起点的最长路)
题目有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a &lt; c,b &lt; d或者b &lt; c,a &lt; d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。思路1.将问题抽象为适合DP...原创 2018-06-18 23:20:15 · 360 阅读 · 2 评论 -
[动态规划] 洛谷P1216 数字三角形 (DP入门)
题目思路与代码一.先将问题往适合DP的方向抽象。1.将当前位置(i,j)看成一个状态,定义状态(i,j)的**指标函数**d(i,j)为从位置(i,j)除法能得到的最大和(包括(i,j))。 2.原问题的解:d(1,1)。 3.状态之间是如何转换的,即状态转移方程:d(i,j)=G(i,j)+max(d(i+1,j),d(i+1,j+1))d(i,j)=G(i,j)+max(d...原创 2018-06-18 11:45:15 · 316 阅读 · 0 评论 -
[模型] LCS 最长公共子序列 (线性动态规划)
模型描述算法1.状态及指标:d(i,j),表示序列N[1…i], M[1…j]的LCS长度。 2.初始状态:d[0][0] = d[0][1] = d[1][0] = 0。 3.答案:d[N.length()][B.length()]。 4.状态转移方程: d(i,j)=max{d(i−1,j−1)+1ifN[i]==M[j],d(i−1,j),d(i,j−1)}d(i,j)=...原创 2018-06-24 22:54:52 · 321 阅读 · 0 评论 -
[动态规划问题] 01背包问题(多阶段决策问题)
题目思路1.状态的推导:最初会想到d(S)表示,0->S的最大边权值。但这样的状态,转移时是无序的,也就是无法确定下一个要装的物品i,是否已经被装过。所以应该将状态转移有序化,也就是通过状态就能表现出哪些物品拿了哪些没有。所以状态定义为(i,j),第i层剩余容量为j。 2.状态及指针函数:d(i,j),处于第i层(前i个物品已经遍历),背包剩余容量为j,这种情况的最大边权(最大...原创 2018-06-21 00:39:09 · 708 阅读 · 1 评论 -
[区间DP] 凸边形三角剖分(子问题的表达)
题目思路本题极其类似于最优矩阵链乘,同样是最优子结构,同样是二分区间DP,唯一的不同在于本题难以简洁地表达子问题。 为什么呢?类似于最优矩阵链乘。 A1A2A3A4A5A6A1A2A3A4A5A6A_1A_2A_3A_4A_5A_6 —- &gt;&gt;&gt;&gt; (A1A2)(A3A4A5A6)(A1A2)(A3A4A5A6)(A_1A_2)(A_3A_4A_5A_6) ...原创 2018-07-06 13:41:53 · 312 阅读 · 0 评论