摘要: 我们观察到m非常小。 考虑只有一行的情况,dp[i][o]表示[1,i]这一段中取出o个矩形,的最大价值。我们预处理出w[i][j]表示[i,j]这一段的最大子矩阵 。那么转移非常显然。 dp[i][o] = max(dp[j - 1][o] + w[j][i]) 我们接着考虑两行的情况,我们类比一 阅读全文
posted @ 2019-04-05 20:12 IAT14 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 做起来不太难,但是很难想的一道题。 分两个步骤,第一个步骤是先求出,最后一个数字是多少。 我们考虑d[i]表示,[1,i]最后一个数字最小情况下,最后一个数字的开始位置。 那转移方程很显然,d[i] = j(满足s[d[j - 1],j - 1]<s[j,i],且j距离i最近,这样子最小)。 这样我 阅读全文
posted @ 2019-04-05 17:45 IAT14 阅读(171) 评论(0) 推荐(0) 编辑
摘要: dp[i][k]表示,在i及i左侧,分成k块,的最大单词数目。 w[i][j]表示,在[i,j],内部多少个单词在此区间开始和结束。 转移方程为dp[i][k] = max(dp[j][k - 1] + w[j + 1][i]) 通过考虑每个单词的结束而非开始,而避开后后效性问题。 如果某个单词是另 阅读全文
posted @ 2019-04-05 10:53 IAT14 阅读(184) 评论(0) 推荐(0) 编辑