本题和某一年的oi题非常相似,都是经典套路 我们知道我们在送完食物后既可以向前送也可以回头送,这就体现了区间dp的思想 为什么我们这次的区间dp不用枚举第三维k来枚举从哪里送过来呢? 因为送货员不是傻子,他如果送到你这了,那么在你们两之间的可以都顺路送了,所以我们只需要枚举两个位置就行 这题的输入不 ...
分类:
其他好文 时间:
2020-02-19 10:18:25
阅读次数:
64
动态规划要从最优子结构来推出大的方案 对于本题,我们要思考,什么是大的,什么是小的。 或许有些人会想设计状态为f[i],表示我从1-i的最小花费,但是仅仅这样是不够的,因为在这之间进小黑屋的不一定要在这之间就出来,他有后效性 那么什么是没有后效性的呢,如果我们判定这个区间就是全部的大小,他没有后面还 ...
分类:
其他好文 时间:
2020-02-18 20:34:31
阅读次数:
73
一、直线型 问题描述: 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值(或最大值)。 思路: 设 DP[ i ][ j ] 表示第 i 堆合并到第 j ...
分类:
其他好文 时间:
2020-02-02 14:02:21
阅读次数:
69
Analysis 总体来说是一个区间DP 此题首先是一个环,要你进行删边操作,剩下的在经过运算得到一个最大值 注意事项: 1.删去一条边,剩下的构成一条线,相当于求此的最大值,经典区间DP该有的样子; 2.现在大概想法有了,还有一个细节,就是当中会出现负数,负数*负数是可能超过当前的最大值的,所以我 ...
链接http://poj.org/problem?id=1160 很好的一个题,涉及到了以前老师说过的一个题目,可惜没往那上面想。 题意,给出N个城镇的地址,他们在一条直线上,现在要选择P个城镇建立邮局,使得每个城镇到离他最近的邮局距离的总和尽量小。 首先提一个这个问题的简化版本,如果P=1得话,这 ...
分类:
其他好文 时间:
2017-08-07 20:33:15
阅读次数:
138
codevs1048: 题目大意:有n堆石子排成一列,每次可合并相邻两堆,代价为两堆的重量之和,求把他们合并成一堆的最小代价。 解题思路:经典区间dp。设$f[i][j]$表示合并i~j的石子需要的最小代价。则有$f[i][j]=min(f[i][k]+f[k+1][j]+\sum\limits _ ...
分类:
其他好文 时间:
2017-08-04 20:36:11
阅读次数:
135
题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=15 经典区间dp,首先枚举区间的大小和该区间的左边界,这时右边界也可计算出来。首先初始化一个匹配,那就是看看这两个括号是否匹配,即: (s[i] == '(' && s[j] == ' ...
分类:
其他好文 时间:
2016-06-27 21:33:38
阅读次数:
201
// poj 1141 Brackets Sequence
// 也是在紫书上看的一题,uva就是多了一个t组数据。
// 经典区间dp
// dp(i,j)表示区间[i,j]内所需要增加的括号数目
// 则分为两种情况
// 一种是s[i]和s[j]是匹配的则
// dp[i][j] = min(dp[i][j],dp[i+1][j-1])
// 另外一种情况是不匹配
// dp[i][j] =...
分类:
其他好文 时间:
2015-05-05 00:05:14
阅读次数:
147
// uva348 最优矩阵链乘
// 典型的区间dp
// dp[i][j] 表示矩阵i到j链乘所得到的最小花费
// dp[i][j] = min(dp[i][k]+dp[k+1][j]+a[i].pl*a[k].pr*a[j].pr);
// 在区间i到j上找一个k使得dp[i][k]+dp[k+1][j]这两部分的和在加上最后的
// a[i].pl*a[k].pr*p[i].pr的最小值...
分类:
其他好文 时间:
2015-04-29 10:08:43
阅读次数:
138
Blocks
Time Limit: 5000MS
Memory Limit: 65536K
Total Submissions: 4250
Accepted: 1704
Description
Some of you may have played a game called 'Blocks'. There are n bloc...
分类:
其他好文 时间:
2014-09-28 22:22:45
阅读次数:
396