区间dp经典入门
lzk_1049668876
stay hungry stay foolish
展开
-
51nod1021石子归并(区间dp经典入门)
题目:N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。思路:区间dp经典入门代码:#include<cstdio>#include<algorithm>using namespace std;const int maxn=1006;int a[m...原创 2018-06-05 21:17:27 · 496 阅读 · 0 评论 -
CodeForces - 767C Garland (树形dp经典入门,dfs实现)
链接: http://codeforces.com/problemset/problem/767/C题意:每颗树有一个权值,问如何分子树能把它分成相等权重的三部分思路:sum求和,只有sum是能够被3整除的才能被被分。然后从下到上dfs出每个结点的子树和(包含自己),bfs后通过两个flag,来记录是否能够分成相等的3部分:(找到一部分,优先用flag1表示)1.如果flag1=0并且当前遍...原创 2018-06-06 19:53:10 · 579 阅读 · 2 评论 -
poj1141括号匹配(区间dp+递归打印路径)
题目描述:给出一串由‘(‘)’‘ [ ' ' ] '组成的串,让你输出添加最少括号之后使得括号匹配的串。思路:i-j表示的是一条序列的开始和结束,dp[ i ][ j ]表示子串s[ i~j ] 需要添加的数量。思想是不断分割小区间,当出现(X)时,应该转移到x,即从dp(i,j)转移到dp(i+1,j-1)如果为单个字符,则dp[ i ][ j ] = 1;(i == j) 打印:算出最优的地方...原创 2018-06-08 18:21:13 · 211 阅读 · 0 评论