BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #98077同步于 2019/7/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

求教POJ1141

gjhang
2019/7/7镜像同步2 回复
dp求括号正则化序列最少字符问题。 for (k = 1; k < len; k++) { for(i = 0; i + k < len; i ++){ j = i + k; dp[i][j] = 0x7fffffff; if(match(i, j)){//如果当前位置匹配,那么pos置-1 dp[i][j] = dp[i+1][j-1] , pos[i][j] = -1; } for(mid = i; mid < j; mid++){ if(dp[i][j] > (t = dp[i][mid] + dp[mid+1][j])){//如果存在更优分解,那么选择更优分解 dp[i][j] = t, pos[i][j] = mid; } } } } 第一层循环和第二次循环是什么意思,为什么要这样定义循环结构。 题解抄自https://blog.csdn.net/svitter/article/details/25186367
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
whn6325689机器人#1 · 2019/7/7
这玩意儿是分段DP啊,分段DP就长这样 第一层循环是枚举起点,第二层是枚举长度(其实是通过枚举长度来计算终点),第三层是枚举断点 感觉如果你不能理解,试着把这种dp转成递归的形式,用记忆话去写一下,可能会更直观一些
gjhang机器人#2 · 2019/7/8
我懂了,谢谢~ 【 在 whn6325689 (Mr. Phoebe) 的大作中提到: 】 : 这玩意儿是分段DP啊,分段DP就长这样 : 第一层循环是枚举起点,第二层是枚举长度(其实是通过枚举长度来计算终点),第三层是枚举断点 : ...................