ACM-动态规划-区间DP
暗金色
这个作者很懒,什么都没留下…
展开
-
POJ - 2955 Brackets(区间dp)
题目大意:给出一个括号字符串,问这个字符串中符合规则的最长子串的长度解题思路:区间dp,用dp[i][j]表示[i,j]这个区间内有符合规则的最长子串的长度 如果str[i] 和str[j]能构成 ()或者[],那么dp[i][j] = dp[i + 1][j - 1] + 2 剩下的情况就是 dp[i][j] = max(dp[i][j], dp[i][k] + dp[k + 1][j])原创 2015-09-30 22:26:36 · 1072 阅读 · 0 评论 -
UVA - 10891 Game of Sum 区间DP博弈
题目大意:有一系列的数字,两个人从这些数字中原创 2014-11-20 23:15:05 · 773 阅读 · 0 评论 -
UVA - 662 Fast Food 区间DP
题目大意:有N个饭馆,M个仓库,给出饭馆的原创 2014-11-24 16:09:39 · 905 阅读 · 0 评论 -
UVALive - 3363 String Compression 区间DP
题目大意:有一串字符串,现在有一种转换规则,如果字符串中出现循环的子串,可以将其转化为 :子串数量(子串) 现在问这个字符串的最短长度解题思路:区间dp,然后分类讨论,这题的难点是如何再进行缩减 将情况分为两种 一种是区间刚好符合缩减情况的,找出该区间的循环节,看能否继续缩减即可 另一种情况就是普通的区间DP了#include<cstdio>#include<algorithm>#inc原创 2015-07-13 20:59:21 · 879 阅读 · 0 评论 -
UVA - 10739 String to Palindrome 区间DP
题目大意:给一个字符串,可原创 2014-11-19 00:13:42 · 783 阅读 · 0 评论 -
UVA - 10453 Make Palindrome 区间DP
题目大意:给你一串字符串,嫩原创 2014-11-16 10:54:24 · 630 阅读 · 0 评论 -
UVA - 10003 Cutting Sticks 区间DP
题目大意:给出一根木棒,上面有N原创 2014-11-11 00:02:08 · 678 阅读 · 0 评论 -
LightOJ - 1031 Easy Game(区间DP)
题目大意:有一种包含N个数字的游戏和两个选手,选手A先手,游戏规则如下 1.每次只能从左往右拿或者从右往左拿1-m个,不能两边同时拿 2.总数和大的获胜解题思路:用dp[i][j]表示[i,j]选手A先手,所能得到的最大数字和 则转移方程为dp[i][j] = max(sum[k] - sum[i - 1] + sum[j] - sum[k] + dp[k + 1][j]) 表示的是拿了[i原创 2015-10-27 23:17:40 · 427 阅读 · 0 评论 -
LightOJ - 1025 The Specials Menu(区间DP)
题目大意:给你一个字符串,问有多少种删除字符的方法,使得剩下的字符构成一个回文串解题思路:用dp[i][j]表示[i,j]的字符有多少种方删除方法,使得剩下的字符构成回文串 考虑一下,如果i == j,则dp[i][j] = 1,初始化,一个都不删除 如果i != j && str[i] != str[j] 则dp[i][j] = dp[i + 1][j] + dp[i][j - 1] -原创 2015-10-27 23:11:14 · 457 阅读 · 0 评论 -
HDU - 5115 Dire Wolf(区间DP)
题目大意:有N只怪,每只怪都有相应的A值和B值 现在要求你消灭这N只怪,消灭第i只怪的代价是A[i] + 相邻的B的和 问最小消灭代价解题思路:在左右两边添加两只A和B都是0的怪 无论消灭顺序如何,A的和是不变的,所以不用考虑A,最后再加就可以了 接着就是区间DP了,用dp[i][j]表示把(i,j)的所有怪都消灭后,独留下第i只怪和第j只怪的最小代价,这就是为什么要在左右添加怪的原因了原创 2015-10-28 23:12:05 · 599 阅读 · 0 评论 -
LightOJ - 1033 Generating Palindromes(区间DP)
题目大意:给你一个字符串,问至少添加几个字符串,才能使这个字符串变成回文串解题思路:用dp[i][j]表示[i,j]内的字符需要添加几个字符才能变回文 考虑两种情况 1.str[i] == str[j],那么dp[i][j] = dp[i +1][j - 1] 2.str[i] != str[j],那么只能在左边添加一个,或者右边添加一个了 所以dp[i][j] = min(dp[i + 1原创 2015-10-28 22:45:45 · 408 阅读 · 0 评论 -
POJ - 1651 Multiplication Puzzle(区间dp)
题目大意:给你N个数,每次可以选择一个数进行剔除(第一个和最后一个不能选择),选出该数后,sum += 该数左边的数 * 该数 * 该数右边的数 问最小的sum是多少解题思路:用dp[i][j]表示[i,j]区间被剔除得只剩下i,j的最小sum dp[i][j] = dp[i][k] + dp[k][j] + num[i] * num[k] * num[j]#include <cstdio>#原创 2015-09-30 22:42:55 · 401 阅读 · 0 评论 -
CodeForces - 149D Coloring Brackets(区间DP)
题目大意:给你一个符合括号规则的字符串,现在要求你将这些括号染色,染色规则如下 1.一个括号要么被染成红色,要么被染成蓝色,要么不染 2.相邻的括号的颜色不能相同(可以同为无色) 3.成对的括号只能有一个被染色 问染色的方案数解题思路:0表示不染,1表示红色,2表示蓝色 那么成对的括号只能符合:(0,1),(1,0),(0,2),(2,0)4个中的任意一个 接下来讨论如何染色 用dp[原创 2015-09-30 22:39:21 · 626 阅读 · 0 评论 -
ZOJ - 3469 Food Delivery(区间DP)
题目大意:有一个餐厅,在X这个位置,送餐速度为v的-1次方,有N个顾客,分别在pos位置,每个顾客都有一个displeasure值,当餐送到该顾客手上时,该顾客的displeasure总值为 displeasure值 * 到手时间问所有顾客的最小displeasure总值和是多少解题思路:首先按位置排个序 设dp[i][j][0]为[i,j]这个区间内的所有人都拿到货了,送货员最后停在i这个位置的原创 2015-09-30 22:56:48 · 454 阅读 · 0 评论 -
UVA - 10304 Optimal Binary Search Tree 区间DP
题目大意:有一棵二叉树,二叉树的最终值 = sum ( 节点的值 * (所在高度- 1) ),这是一棵搜索二叉树,所以左子树的所有节点的值是小于等于根节点,右子树的所有节点的值是大于等于根结点的,求这个二叉树的最终值的最小值解题思路:刚开始不知道怎么求值,参考了Staginner大神的解析才懂得了,dp[i][j] = dp[i][k-1] + dp[k+1][j] + sum[j] -原创 2014-12-19 09:57:30 · 637 阅读 · 0 评论