摘要: 解题关键:了解转移方程即可。 转移方程:$dp[l][r] = dp[l + 1][r - 1] + 2$ 若该区间左右端点成功匹配。然后对区间内的子区间取max即可。 nyoj15:求需要添加的最少的括号数量,用总数减去$dp[0][s.size()-1]$即可。 阅读全文
posted @ 2017-08-24 17:14 Elpsywk 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 题意:有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。 解题关键:区间dp,首先枚举区间,再枚举分割点,区间由小到大更新。 转移方程:$dp[l][r] 阅读全文
posted @ 2017-08-24 16:24 Elpsywk 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一棵带权无向树,以及给定节点1,总约束为$m$,找出切断与所有叶子节点联系每条边所需要的最小价值约束。 解题关键:二分答案,转化为判定性问题,然后用树形dp验证答案即可。 dp数组需要开到ll,如果用设inf的解法。 阅读全文
posted @ 2017-08-24 04:23 Elpsywk 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一棵树,带有向边,找出某个点到达所有点需要反转的最少的边。 解题关键:和求树的直径的思路差不多,将求(父树-子树)的最大值改为求特定值。依然是两次dfs,套路解法。 对树形dp的理解:树形dp其实就是将树进行暴力搜索,只是需要理解状态的概念。那些状态已经完成,需要从底还是从顶开始搜索。 阅读全文
posted @ 2017-08-24 01:22 Elpsywk 阅读(144) 评论(0) 推荐(0) 编辑