区间dp
dp
野指针*
这个作者很懒,什么都没留下…
展开
-
AcWing 321. 棋盘分割 (二维区间dp + 记忆化搜索)
这是一个典型的二维区间dp. 我们用 表示当前的切割的刀数为k时, 产生了一块左上角下标为右下角下标为的棋盘,其方差的最小值. 我们再考虑状态转移, 注意:考虑状态转移时,可以考虑这个状态是由什么状态转移而来,也可以考虑这个状态可以转移到什么状态. 在这道题,显然后者比较简单:. 其中 ...原创 2022-03-16 13:39:21 · 228 阅读 · 0 评论 -
AcWing 320. 能量项链(区间dp + 环形处理)
这道题使用区间原创 2022-03-15 23:34:48 · 191 阅读 · 0 评论 -
AcWing 319. 折叠序列(区间dp)
这道题使用区间dp. 首先, 为区间 的序列折叠之后,最短的序列的长度. 我们考虑状态转移: 1.区间 的序列由 和 这两段序列合并得到. 2.区间 的序列由 这段序列循环展开得到. 这里可能有些读者会疑惑,循环展开时的原序列难道不是一定比合并两端的原序列短吗?为什么我们要考虑第一种情况?其实不然,我们举个反例: ,折叠之后的长度会比折叠之前的长度要长,不如不折叠. 综上所述,有: ...原创 2022-03-15 22:12:19 · 332 阅读 · 0 评论 -
DP环形结构两种处理方法(两次DP(一次断开,一次强制连接), 环拆成链复制一倍)
AcWing 288. 休息时间(两次DP + 滚动数组优化) //F[i, j, 0&1]表示当前i个时间段时,一共选了j个,并且当前的选(1)或者不选(0)时获得的恢复值的最大值 //F[i, j, 1] = max(F[i - 1, j - 1, 1] + U[i], F[i - 1][j - 1][0]) //F[i, j, 0] = max(F[i - 1, j, 1], F[i - 1, j, 0]) //直接存储可能会爆空间,所以我们采用滚动数组优化 #include ..原创 2022-04-01 22:55:25 · 478 阅读 · 0 评论