若有恒,何必三更眠五更起; 最无益,莫过一日曝十日寒。 7.25 分割数组的最大值 区间dp 最大值可以方便的转移,所以可以直接应用区间dp 为什么这里的状态转移不一样? 对比最经典的区间dp 题目 石子合并 \[ j = i+l-1\\ dp[i][j] = \max_{k\in [i,j)}(d ...
分类:
其他好文 时间:
2020-11-07 16:44:26
阅读次数:
18
不要被假象迷惑,其实这是一道区间dp,如果过多的考虑怎么放长方形就容易进入误区。 我们考虑一个dp状态表示f[][][][],将一个长方形中所有的点变成”."的最小代价,之后枚举行列进行区间dp,这其中其实已经做好了划分长方形的工作。 #include<bits/stdc++.h> using na ...
分类:
其他好文 时间:
2020-09-17 17:57:11
阅读次数:
24
区间DP是线性DP的一种,它以“区间长度”作为DP的“阶段”,使两个坐标(区间的左右端点)描述每个维度。 区间DP中,一个状态由若干个比它更小且包含于它的区间所代表的状态转移而来。区间DP的初态一般就由长度为1的“元区间”组成。这种向下划分,再向上递推的模式与某些树形结构如线段树有很大的相似之处。 ...
分类:
其他好文 时间:
2020-08-01 21:36:53
阅读次数:
101
#pragma warning (disable : 4996) #include<iostream> #include<algorithm> //#include<unordered_map> #include<fstream> #include<iomanip> #include<string> ...
分类:
其他好文 时间:
2020-07-29 09:54:50
阅读次数:
66
令$dp[i]$表示放置连续的$i$个骨牌所需要的期望步数,按照区间DP的思想,它是来自一个$l+1+r$的区间的,这里的$+1$就是最后放的那块,且$l+1+r=i$,下面来考虑转移。 首先,假设骨牌倒了之后不会碰倒两边的骨牌,则有转移: \(dp[i]=dp[l]+dp[r]+\frac{1}{ ...
分类:
其他好文 时间:
2020-07-22 20:05:39
阅读次数:
82
class Solution { public int maxCoins(int[] nums) { int n = nums.length + 2; int[] points = new int[n]; points[0] = 1; points[n-1] = 1; for(int i = 1; ...
分类:
其他好文 时间:
2020-07-19 18:06:08
阅读次数:
64
C - Brackets 区间dp 题目大意: 给你长度为n的序列,问1~n的最长合法子序列是多长。 题解: 对于一个括号的匹配,有两种方法 合法括号的嵌套 合法括号的排列 如果是第一种转移方程是:\(dp[i][j]=dp[i+1][j-1]+2\) 如果是第二种转移方程是:\(dp[i][j]= ...
分类:
其他好文 时间:
2020-07-08 23:18:49
阅读次数:
61
题目链接:http://lightoj.com/volume_showproblem.php?problem=1422 题目大意:有n个地方,每个地方要穿一种衣服,衣服可以嵌套穿,一旦脱下的衣服不能再穿,除非穿同样的一件新的,问在满足题目要求的穿衣顺序下最少需要准备几件衣服 Sample Input ...
分类:
其他好文 时间:
2020-07-08 01:39:13
阅读次数:
90
https://zoj.pintia.cn/problem-sets/91827364500/problems/91827368971 需要判断凸包,学了再来补; 先说dp部分, dp[ i ][ j ]表示划分起点为i,终点为j的凸多边形所需的花费; dp [ i ] [ j ] =min ( d ...
分类:
其他好文 时间:
2020-07-08 01:28:39
阅读次数:
73
区间dp D - Flood Fill 题目大意: 如果[l,r] 这个连续的区间的数都相等,则说明这个是一个连通块,给你n个数,每一个数都代表这个位置的颜色,首先你要选取第一个操作的位置,之后你可以对这个位置所在的连通块进行改变颜色,可以改变成任意颜色。问最少多少次操作可以让这n个数变成一个颜色。 ...
分类:
其他好文 时间:
2020-07-06 18:12:17
阅读次数:
59