题目大意:将n个数分成m组,将每组的最大值与最小值的平方差加起来,求最小和。 题目分析:先对数排序。定义状态dp(i,j)表示前 j 个数分成 i 组得到的最小和,则状态转移方程为dp(i,j)=min(dp(i,k-1)+w(k,j)),其中w(i,j)=(a[i]-s[j])*(a[i]-a[j
分类:
其他好文 时间:
2016-03-19 12:33:51
阅读次数:
124
题目大意:有n个敌方军火库呈直线排列,每个军火库有一个值vi,并且任意相邻的两个库之间都有通道相连。对于任意一条连起来的军火库链,它对我方的威胁可以用函数w(i,j)表示为:w(i,j)=vi*sum(i+1,j)+w(i+1,j) i<j; w(i,j)=0 i=j; 现在,你有m个炸弹,每颗可以
分类:
其他好文 时间:
2016-03-18 01:39:27
阅读次数:
191
1021石子归并V1 N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。 例如: 1 2 3 4,有不少合并方法 1 2 3 4 => 3 3 4(3) => 6 4(9) => 1...
分类:
其他好文 时间:
2016-03-10 20:21:29
阅读次数:
208
环形石子合并问题。有一种方法是取模,而如果空间允许的话(或者滚动数组),可以把长度为n个换拓展成长为2n-1的直线。 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int ma...
分类:
其他好文 时间:
2015-08-02 11:43:17
阅读次数:
124
设d(i, j)为连通第i个点到第j个点的树的最小长度,则有状态转移方程:d(i, j) = min{ d(i, k) + d(k + 1, j) +p[k].y - p[j].y + p[k+1].x - p[i].x }然后用四边形不等式优化之。。 1 #include 2 #include ....
分类:
其他好文 时间:
2015-08-02 11:37:05
阅读次数:
128
d(i, j)表示用i个邮局覆盖前j个村庄所需的最小花费则有状态转移方程:d(i, j) = min{ d(i-1, k) + w(k+1, j) }其中w(i, j)的值是可以预处理出来的。下面是四边形不等式优化的代码: 1 #include 2 #include 3 #include 4 ...
分类:
其他好文 时间:
2015-08-01 18:42:23
阅读次数:
138
用w[i][j]表示i到j之间没有边毁掉的费用。
有一种很好证明w[i][j]是否满足四边形不等式的条件. 若(w[i+1][j]-w[i][j])是关于j的减函数,就是满足条件的。可以证明这里的w[i][j]是瞒住条件的。
#include
#include
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2015-06-30 10:56:50
阅读次数:
137
题目描述 Description
有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1]。问安排怎样的合并顺序,能够使得总合并代价达到最小。
输入描述 Input Description
第一行一个整数n(n≤3000n\le3000)
第二行n个整数w1,w2...wn(wi≤3000)w_1,w_2...w_...
分类:
其他好文 时间:
2015-06-09 20:08:45
阅读次数:
167
今天第一次学习四边形不等式优化dp,感觉优化效果十分给力,不过数学味道比较浓重,证明比较复杂。因此这里删繁就简,给出关于四边形不等式优化必须要明白的地方,以后直接套用条件即可。
四边形不等式优化条件
在动态规划中,经常遇到形如下式的转台转移方程:
m(i,j)=min{m(i,k-1),m(k,j)}+w(i,j)(i≤k≤j)(min也可以改为max)
上述的m(i,j)表示区间[i,j...
分类:
其他好文 时间:
2015-05-16 09:10:25
阅读次数:
203