题目大意:给你一个矩阵,不能选择每行中相邻的数字,也不能选当前行的上一
行和下一行,问使所选数和最大的值是多少?
思路:用元素压缩的思想。先把2维矩阵降为1维数组。对每行求出不相邻的数字
最大和是多少,把几个数字和缩成一个数。再对所有行求出不相邻的行数字最大
和是多少。
对于每行求出不相邻的数字最大和的状态转移方程为
dp[i+1] = max{吃i达到的最大值,不吃i达到的最大值+第i+1个数}...
分类:
其他好文 时间:
2014-11-04 21:11:34
阅读次数:
183
01背包问题详解
题目
有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。
基本思路
这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。
用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:
f[i][v]=max{f[i-...
分类:
其他好文 时间:
2014-11-03 22:37:41
阅读次数:
195
题意:一棵n个结点的无根树(0
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054
——>>状态:
dp[i][1]表示以 i 为结点的子树,在 i 放一个士兵,可以守护所有边的最少士兵数。
dp[i][0]表示以 i 为结点的子树,在 i 不放士兵,可以守护所有边的最少士兵数。
状态转移方程(结点 j 是结点 i 的儿子):
dp...
分类:
其他好文 时间:
2014-10-25 20:10:37
阅读次数:
281
题意:一棵n个结点的有根树(1
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2412
——>>状态:
dp[i][1]表示以结点 i 为根的子树,且选择i,能找出的满足要求的最大结点数。
dp[i][0]表示以结点 i 为根的子树,且不选择i,能找出的满足要求的最大结点数。
状态转移方程(结点 j 是结点 i 的儿子):
dp[i][...
分类:
其他好文 时间:
2014-10-25 15:57:40
阅读次数:
193
题意:将一个8*8的棋盘(每个单元正方形有个分值)沿直线(竖或横)割掉一块,留下一块,对留下的这块继续这样操作,总共进行n - 1次,得到n块(1
题目链接:http://poj.org/problem?id=1191
——>>状态:dp[x1][y1][x2][y2][i]表示将(x1, y1)到(x2, y2)的矩形分割i次的最小均方差。
状态转移方程:dp[x1][y1][x2][y...
分类:
其他好文 时间:
2014-10-23 20:53:36
阅读次数:
274
题意:输入一段短文(所有字符总数不超过10000),要求格式化成两端对齐(每行长度为n,1
题目链接:http://poj.org/problem?id=1093
——>>状态:dp[i]表示从第i个单词开始到最后一个单词的最小总坏值(第i个单词是这一行的第1个单词)
状态转移方程:dp[i] = min(dp[i], dp[j + 1] + Badness(i, j));(Badness...
分类:
其他好文 时间:
2014-10-22 22:07:30
阅读次数:
349
题意:一个长为N的字符串( 3
题目链接:http://poj.org/problem?id=1159
——>>状态:dp[i][j]表示第i个字符到第j个字符组成的字符串变成回文串的最少插入次数。
状态转移方程:
若sz[i] == sz[j],则:dp[i][j] = dp[i + 1][j - 1];
否则:dp[i][j] = min(dp[i + 1][j], dp[i][j...
分类:
编程语言 时间:
2014-10-21 21:37:52
阅读次数:
247
题意:一条直路上有V个村庄(1
题目链接:http://poj.org/problem?id=1160
——>>
状态:dp[i][j]表示前i个村庄建j个邮局的最短距离和。
状态转移方程:dp[i][j] = min(dp[i][j], dp[k][j - 1] + nDis[k + 1][i]);(前k个村庄由前j - 1个邮局管,后面的村庄归最后一个邮局管)
状态:nDis[i]...
分类:
其他好文 时间:
2014-10-21 17:48:18
阅读次数:
341
题意:n个数(3
题目链接:http://poj.org/problem?id=1651
——>>状态:dp[i][j]表示第i个数到第j个数组成的序列的最小权值和。
状态转移方程:dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j] + a[i] * a[k] * a[j]);(枚举最后一个拿掉的数来更新)
时间复杂度:O(n ^ 3)
#incl...
分类:
其他好文 时间:
2014-10-21 12:22:37
阅读次数:
147
题意:给你一个N×M的棋盘,每一次随机在这里放一个子(不能重复)问你最后每一行每一列只要有一个子的期望次数解题思路:dp[i][j][s] 已经用 i 个子 占了 j 行 s 列的概率,再找出状态转移方程就行。解题代码: 1 // File Name: d.cpp 2 // Author: dark...
分类:
其他好文 时间:
2014-10-20 22:50:15
阅读次数:
216