
区间dp
文章平均质量分 73
Sleppypot
困难的路越走越容易,容易的路越走越难。
展开
-
矩阵链乘的变换
题意:一串数,每次取掉一个数并且将这个数与周围两个数相乘的结果加起来,最后取得就剩两个数。求最小的答案。解答:区间dp。在网上看到两个答案:第一种思路:dp[i][j]表示从i-1到j最终取得就剩下i-1和j所得的最小值。那么状态转移方程为dp[i][j] = min(dp[i][j],dp[i][k]+dp[k+1][j]+a[k]*a[i-1]*a[j])(i 代码:#incl原创 2017-07-11 19:35:33 · 314 阅读 · 0 评论 -
邮局问题
题意:有横向排列的P个村庄,每个村庄都有一个坐标位置。在这P个村庄上要建V个邮局。问这P个村庄中建造V个邮局之后,所有村庄到最近的邮局的距离的最小值是多少?解答:dp[i][j]表示前i个村庄建造j个邮局的最小距离之和。 dp[i][j] = min(dp[i][j],dp[k][j-1] + w[k+1][j]) w[k+1][j]表示从第k+1个村庄到第j个村庄建立一个邮局的最原创 2017-07-13 10:57:48 · 818 阅读 · 0 评论 -
石子合并问题
题目:NYOJ737题意:有n堆石子,每堆有a[i]个,每次合并时只能合并相邻的两堆,代价为两堆石子的个数之和。问把这n堆石子合并成一堆需要的最小代价是多少。解答:状态:dp[i][j] 表示合并第 i 堆到第 j 堆石子的最小代价转移方程:dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1])原创 2017-07-06 14:53:23 · 303 阅读 · 0 评论 -
括号匹配问题
题目:poj2955题意:给出一个只包含(、)、【、】的字符串,求出最长的合格子串的长度解答:dp[i][j]表示从第i个字符到第j个字符最长的合格子串的长度,由此得出两个转移方程: dp[i][j] = dp[i+1][j-1] + 2(i和j匹配) dp[i][j] = max(dp[i][j],dp[i][k]+dp[k+1][j])(i #include#in原创 2017-07-06 16:33:35 · 254 阅读 · 0 评论