摘要:做了一些区间DP的题目,总结如下 1.Multiplication Puzzle 原题地址:http://poj.org/problem?id=1651 题意: 给定一个序列,可以依次从序列中取走除了左右两端点之外的元素,每次取走一个元素,获得该元素乘以它左右两边元素乘积的点数,求可能的最小点数 题
阅读全文
摘要:原题地址 题意: 给定一个括号序列,问删去一个子集,得到一个非空的合法序列的方案数。 题解 题目实际上就是问给定序列中存在多少非空子集为合法序列 首先想到的是枚举分界点,dp[l][r]=sigma(dp[l][k]*dp[k+1][r],l<=k<=r),但是必然存在重复计数的情况。 考虑区间左端
阅读全文
摘要:原题地址 题意: 给定一个序列,每个元素有一个权值A[i],要求通过一个栈改变序列的顺序,使得出栈顺序满足sigma(i*A[i])最小。 题解 出栈顺序和入栈顺序满足一个关系,即假如第一个元素是第k个出栈,那么[2,k]必然比1先出栈,[k+1,n]必然比1后出栈,[1,n]也就划分成了[2,k]
阅读全文
摘要:原题地址 题意: 给定两个字符串s1,s2,每次可以对s1的一个区间进行操作,使其一段区间内的所有字符都变成一个字符,问最少操作数使得s1变成s2。 题解 (完全照搬网上题解系列) 首先考虑由空串变成s2,dp[i][j]表示[i,j]和s2相同需要的最小步数。相比朴素地操作数j-i+1,如果s2在
阅读全文
摘要:原题地址 题意: 在x轴上存在若干客人和一个饭店,要求规划一个送餐顺序,使得每个客人等待的时间乘以他对应的权值之和最小。 题解 首先明确,一个区间的客人送餐完成后,送餐者要么在左端点,要么在右端点。 所以可以考虑dp[i][j][k],为[i,j]完成后所有客人等待的最小权值。其中i,j为左右端点,
阅读全文
摘要:原题地址 题意: 给定一个序列,可以依次从序列中取走除了左右两端点之外的元素,每次取走一个元素,获得该元素乘以它左右两边元素乘积的点数,求可能的最小点数。 题解: 区间DP,首先会想到枚举区间中第一个被取走的元素k,转移dp[l][r]=min(dp[l][r],dp[l][k]+dp[k][r]+
阅读全文
摘要:原题地址:http://www.codeforces.com/contest/149/problem/D 题意: 给一个匹配的括号序列染色,要求 1.括号要么被染色,要么没有被染色,只能染成红蓝两种颜色; 2.对应的两个匹配的括号有且只有一个染色; 3.相邻的括号颜色不同 求可能的染色方案数 题解
阅读全文
摘要:原题地址:http://codeforces.com/problemset/problem/417/D 题意: Gena 为了解决m个问题,请他的朋友们帮忙,其中第i个朋友可以解决某mi个问题,需要花费xi卢布,并且要求安装至少ki个显示器,每个显示器需要b卢布。 问解决所有问题需要多少多少卢布 题
阅读全文
摘要:原题地址:http://codeforces.com/problemset/problem/213/C 题意:略 题解:dp,状态为点的位置,直接枚举复杂度是n4,利用两个点坐标之和之间的关系,优化到n3。
阅读全文
摘要:原题地址:http://codeforces.com/problemset/problem/448/C 题意: 略 题解 略
阅读全文