区间DP
文章平均质量分 83
区间DP
jpphy0
算法是存在的
展开
-
poj 3280 Cheapest Palindrome (回文子序列,区间dp)
目录问题分析代码 问题 poj 3280 Cheapest Palindrome - http://poj.org/problem?id=3280 分析 回文子序列:由两侧向中间构造 先比较两侧的字符是否相同,若相同则同时向中间移动首尾指针 若不同,则分两种情况处理,分别是移动左指针 和 移动右指针 例:abcda 第一步:比较首尾,相同,所以移动首尾指针,此时首尾指针指向的区间为:bcd【a|bcd|a】 第二步:比较首尾,不同,因此有两种情况, * 在尾部添加字符b,然后移动左指针,此时首尾指原创 2021-08-11 20:44:21 · 108 阅读 · 0 评论 -
csu-1592 石子合并(区间dp)
目录问题分析方法迭代记忆化搜索 问题 csu-1592 石子合并 分析 对于 [1,n][1,n][1,n] 堆石子,无论怎么合并,最后一次合并一定是 [1,k][1,k][1,k] 与 [k+1,n][k+1,n][k+1,n] 合并,其中 k∈{1,⋯ ,n}k\in\{1,\cdots,n\}k∈{1,⋯,n} 显然,选择一个 kkk 后,则问题可以转化为两个子问题,即 [1,k][1,k][1,k] 和 [k+1,n][k+1,n][k+1,n] ,遍历 kkk 可得问题的解 问题的变量:区间 状原创 2021-08-11 12:18:36 · 52 阅读 · 0 评论 -
洛谷 P1622 释放囚犯(区间dp)
目录问题分析代码 问题 洛谷 P1622 释放囚犯 - https://www.luogu.com.cn/problem/P1622 分析 问题的本质:囚犯释放的最优序 在给定的释放名单首尾添加两个已经释放的虚拟囚犯,即 a[0]=0a[0]=0a[0]=0 和 a[m+1]=n+1a[m+1]=n+1a[m+1]=n+1,转化为名单的区间问题 dp[i,j]\color{red}{dp[i,j]}dp[i,j]:[i,j][i,j][i,j] 是释放名单的一个区间,其中,囚犯 a[i]、a[j]a[i]原创 2021-08-11 10:11:28 · 147 阅读 · 0 评论 -
hdu 4283 You Are the One(区间dp)
目录问题分析代码 问题 hdu 4283 You Are the One - https://acm.hdu.edu.cn/showproblem.php?pid=4283 分析 卡特兰数(例题1) 根据区间 [l,r][l,r][l,r] 内的第1个数出现的位置,将问题分解为两个子问题,子问题的区间分别是 [l+1,i][l+1,i][l+1,i] 和 [i+1,r][i+1,r][i+1,r],i∈{l,⋯,r}i \in \{l,\cdots ,r\}i∈{l,⋯,r},遍历 iii 即可求解 转移原创 2021-08-09 17:21:17 · 120 阅读 · 0 评论 -
HDU 5115 Dire Wolf(区间dp)
目录问题概述4维状态设计分析代码2维状态设计分析代码 问题 HDU 5115 Dire Wolf - https://acm.hdu.edu.cn/showproblem.php?pid=5115 概述 方法:区间dp 对于一个区间 [l][r][l][r][l][r],设最后打败的编号是 k(l≤k≤r)k (l\leq k \leq r)k(l≤k≤r),则问题可以分解为两个子问题,即 [l][k−][l][k-][l][k−]和[k+1][r][k+1][r][k+1][r],因此遍历 kkk 后即原创 2021-08-08 15:28:49 · 255 阅读 · 0 评论 -
HDU 4745 Two Rabbits
链接 Two Rabbits - http://acm.hdu.edu.cn/showproblem.php?pid=4745 分析 dp(i,j)定义:从区间[i, j]两端进入能跳跃的最大步数,跳入算1步,跳出不算 区间转换策略:若区间[i,j]两端的值相同,则转移到区间[i+1,j-1],状态转移方程是dp[i,j]=max(dp[i,j],dp[i+1,j-1]+2);若区间[i,j]两端的值不相同,则转移到区间[i,j-1] 或 [i+1,j],状态转移方程是dp[i,j]=max(dp[i,j原创 2021-05-14 16:05:15 · 83 阅读 · 0 评论 -
HDU 2476 String painter(区间DP)
String painter - http://acm.hdu.edu.cn/showproblem.php?pid=2476 分析 每次操作应至少使得1个字符变成目标字符(理由:否则这次操作可以省略) 如果某次操作将一段字符串改写为一段单一字符的串,那么,对应的目标字符串的首尾字符就等于这个字符(理由:否则,首部、尾部不操作【操作导致的结果不会变好】)。例如:xyzz -> abac中,1)操作xy -> aa 、xy -> bb 和xy -> dd 是不合理的原创 2021-05-12 22:05:44 · 384 阅读 · 1 评论