随笔分类 - DP
摘要:题意:把给定的长方体(不限个数)叠加在一起,要求上面一个长方体的长和宽都比下面长方体的小,求这些长方体能叠加的最高的高度.(其中(3,2,1)可以摆放成(3,1,2)、(2,1,3)等)。 思路:其实就是求最长的单调递减序列。在长和宽的递减下,求最大能得出的最大高度了。
阅读全文
摘要:1.能用动态规划解决的问题的特点: 1)问题具有最有子结构性质。如果问题的最优解包含的子问题的解也是最优的,就称该问题有最优子结构性质 2)无后效性。当前的若干状态值一旦确定,则此后过程的演变就之和这若干个状态的值有关,和之前是采取哪种手段或经过那条路径演变到当前的这若干个状态,没有关系。 2.思路
阅读全文
摘要:题意是将一个长度为n的序列,分成m段不相交叉的子段,使得他们的和最大。 于是可以用dp[i][j]来表示在前j个数中,以num[j]结尾并分为i段的最大和。此时我们可以得出一个式子,dp[i][j]=max(dp[i-1][k]+a[j],dp[i][j-1]+a[j]) (i-1< k< j-1)
阅读全文
摘要:我是按照DP 专题刷的,可这道题我应该是暴力过的 神奇之一次AC:思路: 第一个数肯定需要一个拦截系统,后面的如果是递减下来的数值用这一个就好了,如果数变大,要看一哪个拦截系统还可以拦下,如果都不能拦下,就要加一个拦截系统 #include<iostream> #include<stdio.h> #
阅读全文
摘要:总是把DP和搜索搞混……很苦恼,有没有什么标志性区别呀 这道题是个DP,当前台阶的走法=前一步的两种走法之和(前一步上一个台阶/上两个台阶);(他可以走一步到这,也可以走两步到这) 最初站在第一个台阶上。
阅读全文