随笔分类 - dp-区间dp
摘要:题目描述: 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。 在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点,然后交换它的两个子节点。 例如,如果我们挑选非叶节点 "gr" ,交换它的两个子节点,将会产生扰乱字符串 "rgeat" 。 我们将 "rgta
阅读全文
摘要:题意:给你n对pair 里面有两个值,分别是key 和 val 。你可以取相邻的两个pair 获得其中的val,前提是两个pair 的key 的 gcd 不为 1。当然你把相邻的两个取走了之后原本不相邻的两个就变得相邻了。比如:你将下标为 2,3 取走之后,下标1,4就变得相邻了,求你可以获得的最大
阅读全文
摘要:题目大意是说一个字符串,每插入或者删除一个字符都需要一定的代价,问怎样可以使这个字符串变成一个回文串,且花费最小。 题解:我们定义一个dp[i][j]表明区间i~j为回文串的最小花费,由于插入和删除都是可以任意位置进行的,所以无后效性。然后状态转移和以前的回文串的状态转移差不多。 (新的理解,搞回文
阅读全文
摘要:题目:http://acm.hdu.edu.cn/showproblem.php?pid=4745 题解:首先要抽象出题目要求的是啥。首先对于环的问题, 我们可以倍增成链,然后环的所有情况可以通过链来解决。这道题目由于不用越过自己走过的石头,所以2*n的链就覆盖了所有情况了。然后对于每种情况,要求两
阅读全文
摘要:状态转移方程如下: 当i > j时,dp[i,j]= 0。 当i = j时,dp[i,j] = 1。 当i < j并且str[i] == str[j]时,dp[i][j] = dp[i+1][j-1]+2; 当i < j并且str[i] ≠ str[j]时,dp[i][j] = max(dp[i][
阅读全文
摘要:Description We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a regular brackets sequence, if s is a
阅读全文
摘要:You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3878 Accepted Submission(s): 1793
阅读全文
摘要:Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65535 K (Java/Others)Total Submission(s): 3183 Accepted Submission(
阅读全文
摘要:Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9957 Accepted: 6152 Description The multiplication puzzle is played w
阅读全文
摘要:描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。
阅读全文
摘要:整数划分(四) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 整数划分(四) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其
阅读全文
摘要:这道题目能用区间dp来解决,是因为一个大区间的括号匹配数是可以由小区间最优化选取得到(也就是满足最优子结构) 然后构造dp 既然是区间类型的dp 一般用二维 我们定义dp[i][j] 表示i~j这个区间需要添加括号的数量 那么状态怎么转移呢? 第一种情况:对于i指向的括号 如果i+1 ~ j里面不存
阅读全文