![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
Cichard
这个作者很懒,什么都没留下…
展开
-
LIS 最长上升子序列 多种解法
最长上升子序列分严格上升或者不严格上升,我写的代码是严格上升的,也就是说前后不可以相等 1 1 1 1 不算上升序列,和不严格上升相差一个的等号,其实没什么差别,思想是一样的。DP最基础的是dp,复杂度为O(n^2),虽然说我觉得没什么dp的影子。dp[i],表示选第i个数,且以第i个数为结尾的最长上升子序列为多少,状态转移方程为dp[i]=max(dp[k]), (1<=k<i&&a[k]<=a[i])。核心代码如下:while(~scanf("%d", &am原创 2020-08-24 10:39:21 · 124 阅读 · 0 评论 -
hdu1024 最大子和段 dp+滚动数组
刚开始刷dp,先来几个水题题意:把一个长度为n的数组分成不重合的m段,求最大和思路:显然的dp题一开始的思路就是,一个二维数组dp[i][j],表示选第j个数并把a[1,j]分成i段那么就要想这个dp[i][j]是如何来的,可以由dp[i][j-1], 即前j-1个分成i段并且选了a[j-1]这个数,所以可以直接加上去,还有一种情况是可以a[j]自成一段,那么dp[i][j]就等于max(dp[i-1][k])+a[j], 1<=k<=j-1,前j-1个分成i-1段加上a[j]自成一段,原创 2020-08-23 23:04:48 · 91 阅读 · 0 评论 -
codeforces 1391D 状压dp
待补原创 2020-08-16 16:06:00 · 239 阅读 · 0 评论 -
codeforces1398D DP
1398D 1800的题,简单dp,但架不住我dp菜啊题意:现在给你R对红色小棒,对应的长度为ri, G对绿色小棒,对应长度为gi, B对蓝色小棒,对应长度为bi,现在让你把这些小棒组合成矩形(四根小棒),要求为对应的边颜色要一致,相邻的边颜色不一致,问你能得到的最大的矩形面积。思路:一开始想的是贪心,但后来想到了一个反例如下:6 66 65 5 5 5,如果按照贪心的话就是662,但是实际上他最大的面积是564,所以要用dp进行暴搜,然后取最优开个三维数组dp[i][j][k],表示R只考虑原创 2020-08-16 10:56:29 · 173 阅读 · 0 评论