
动态规划
文章平均质量分 68
Andymion
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ-3666 Making the Grade
题目大意是给定一串序列,变成非严格递增或非严格递减,总代价是修改单个值变化的总和。 思路: DP、离散化 首先离散化ai 所有可能的取值,使之成为一个单调的序列b 状态转移方程为 d(i, j) = min{d(i - 1, k), k i - bj| 其中d(i, j) 代表前 i 个数 离散化后的第j小的数 bj 此时复杂度是O(n ^ 3)原创 2016-08-13 16:55:30 · 532 阅读 · 0 评论 -
HDU 2845
给定一个n 行 m列的矩阵,每次选取都有一定的规则,每一个小格都有价值,问如何选取价值最大。选取的规则是,选中的当前小格沿y轴方向的左右两个小格不能选择,和它相邻的沿x轴的两行小格不能选择。这题从横向看(y轴方向),每次选中小格后,都是相邻的小格的不能使用,而且选中小格相邻两行也不能使用,我们肯定是把这一行尽量取最优。这样对于每一行,我们都有一个最优,从总体如何选择行来看,也和我们原创 2016-12-06 15:24:19 · 430 阅读 · 0 评论 -
HDU 1505
这道题实质是HDU1506的二维版dp http://blog.youkuaiyun.com/Andymion/article/details/53443988在给定的矩形中选取最大的矩形,其中有些地方是被占据的,不能选取。以行为开始依次寻找,首先预处理当前块能向上延伸的长度,然后一维处理它的长度下左右延伸的宽度。#include #include #include #include #inc原创 2016-12-04 18:27:23 · 464 阅读 · 0 评论 -
HDU 1506
题意是给定一定量的木板,长度不一,按顺序排成一排,问够成的图形中能容纳的最大的矩形面积是多少。思路dp / 单调栈首先说dp的思路,因为对于每一个木板,我们都有一个高度,主要是看这个高度能够向左向右延伸多远。如果一个木板左边的木板能够大于当前的木板,则当前的木板的高度就能延伸到左边的木板,依次类推,我们其实就是不断寻找左边木板最多能延伸到哪,因为如果左边木板比当前木板的高度大的原创 2016-12-03 13:29:50 · 549 阅读 · 0 评论 -
UVa 1218
题目大意是给定一个树状结构,确定一些特殊的结点,使每一个普通节点之和一个特殊节点相邻,且求得的这些特殊节点的数量最少其实就是最大独立集的翻版,想到状态也就不难推出状态转移方程了。1、 d(u, 0) = sum { min(d (v, 0), d (v, 1) ) } + 12、 d(u, 1) = sum { d (v, 2) }3、 d(u, 2) = min{ sum { d原创 2016-10-08 19:57:58 · 401 阅读 · 0 评论 -
UVA 10723
题目大意是给你两个字符串,求一个最短长度的字符串,使得两个字符串是这个字符串的子序列,同时求出有多少种这样的字符串。思路LCS其实求出最短长度还是很好理解是一个基本的LCS问题。但是求出多少种就要用递推。设p(i, j)是第一个字符串的前i个字符和第二个字符串的前j个字符串求得的最短长度字符串的数量。设d(i, j)是最长公共子序列长度, s, t分别为两个字符串。当s[i原创 2016-10-18 15:42:31 · 685 阅读 · 0 评论 -
HDU 1074
题意是一个刚从赛场回来的ACMer,要补作业,每个作业都有完成的时间和截止期限,超过截止期限要受到惩罚。问怎样安排写作业的次序使得受到的惩罚最小,如果有多个答案,输出字典序最小的。思路状态压缩,dp因为完成作业的状态有很多种,可以完成了这个,再去完成另一个,很容易想到用一个集合表示,即状态压缩。最后记忆化搜索即可。#include using namespace std;原创 2016-10-26 22:05:42 · 350 阅读 · 0 评论 -
HDU 2955
题目描述是一个汉子准备去抢劫,给定n个银行的存款和风险,求让他在能承受的风险下取得最大利益。思路 01背包如果按照普通01背包的思路来想的话容量应该是风险,价值是利益。但是容量因为是浮点数所以转移并不简单,所以我们可以计算出所有可能获得利益的概率。把容量改为利益,价值是风险,这样便能转移状态。这样就相当于求获得最大利益的最小风险,但是计算最小风险的话用概率的知识就知道,每抢劫一原创 2016-10-13 23:35:31 · 282 阅读 · 0 评论 -
UVa1331
题目大意就是对一个多边形进行三角剖分。wiki的三角剖分https://en.wikipedia.org/wiki/Triangulation_(geometry)问怎么剖分使得最大三角形的面积最小。对于凸多边形,都有状态转移方程d(i, j) = Min{d(i, k), d(k,j), S(i, j, k)}但是题目中给的不一定是凸多边形,则在对任意一个子多边形,如果有任意原创 2016-09-25 16:28:49 · 721 阅读 · 0 评论 -
UVa 1252
有n个物体的m个特征,每个物体用m位的01串表示,每次可以询问一个特征,问最少询问几次可以保证猜到思路状态压缩、动态规划用两维表示,d(s, a),s表示已经询问的特征集,a表示已经具备的特征集,设要询问的下一个特征为kmin{ max{ d(s + {k}, a + {k}), d(s + {k}, a) + 1} }边界是当有个物体符合a,不符合s-a中的特征,d(s,原创 2016-10-11 09:39:26 · 473 阅读 · 0 评论 -
UVa 1630
题目大意是给你一个字符串,字符串可以折叠,S串折叠后可以用X(‘S)表示,其中’S是S的子串,问折叠后最小的长度串是什么。数字X和括号也算长度。思路DP这题很容易想到是记忆化搜索,要注意两点,一个是折叠串的判断,可以通过枚举位置来实现,可以判断一个子串可以是当前串的多少分之一,第二个是分区间讨论,用一个数组保存折叠次数方便打印。状态转移方程是如果S(i, j)是折叠串原创 2016-09-23 18:42:47 · 576 阅读 · 0 评论 -
UVa 1625
题目大意输入两个序列,将两个序列合并成一个序列,要求原有的顺序不能改变。思路dp首先要想到如果按题目要求合并序列可以每次把一个序列的开头放在合成序列的尾部,此时可以设计状态d(i,j) 表示当前第一个序列到了第i个位置,第二个序列到了第j个位置的最小花费,最后的结果就是d(n,m) ,n是第一个序列的长度,m是第二个序列的长度。状态转移方程为d(i+1, j) = min{d(原创 2016-09-07 09:07:12 · 346 阅读 · 0 评论 -
UVa 1629
题目大意是给定一个n * m的蛋糕,蛋糕上可能会有樱桃,每次只能沿轴线切一刀,求最少的能使每一块蛋糕至少只有一个樱桃的最小长度。思路记忆化搜索问题本身不难,状态就是给定每块蛋糕的左上角和右下角,然后记忆化搜索即可,同时注意切蛋糕一定要保证每一刀分开的两个蛋糕都至少有一个樱桃。#include using namespace std;const int maxn = 20原创 2016-09-19 23:49:54 · 397 阅读 · 0 评论 -
UVa 10118
题目大意是给了4堆糖果,每一堆糖果里面都有各种各样的糖果,我们每次可以取每一堆糖果顶端的糖果放在篮子里,篮子里最多放不超过5种糖果,如果篮子里有一对一样的糖果,就把那一对糖果放在口袋里,问口袋最多能放几个糖果思路 记忆化搜索既然只有4堆糖果,我们每次取法总会重复计算一些状态,将状态记忆化, d(a, b, c, d){1 到了第a个,第二堆糖果到了第b原创 2016-09-06 13:41:13 · 390 阅读 · 0 评论 -
UVa 1626
题目大意是给定一个括号序列,添加最少的括号使这个序列匹配并且打印出来思路区间DP首先设计状态,d(i, j)表示当前序列的开头位置是i,结束位置是j的最短需要添加的括号的个数,对于当前的括号序列,如果最左面的括号和最右面的括号匹配,则它的最小值应为d(i, j) = min{d(i, j), d(i + 1, j - 1)}, 同时取d(i, j) = min{d(i, j), m原创 2016-09-17 11:00:18 · 336 阅读 · 0 评论 -
HDU 4433
题目大意是给定一个密码锁的初始状态和最终状态,每次可以转动连续的一或二或三个状态,问到最终状态最少需要转几次。思路 DP设d(i, x, y) 为 前i个字符已经匹配好,第i + 1的数字是x, 第i + 2的数字是y。则状态转移方程为d(i, y + a, z + b) = min{d(i, y + a, z + b), d(i - 1, x, y) + step}原创 2016-08-14 11:46:39 · 563 阅读 · 0 评论 -
CodeForces-489f
题目意思是给一个m*n的01矩阵,将剩余的n-m行01矩阵填满,并保证最后的n*n的矩阵每一行和每一列都有且仅有两个1,问有多少种填法。 对于每一行,我们都可以从上一行的所有状态中推出当前这一行填01的方法种数。对于填哪两列其实我们并不用关心,只需要记录到当前行由几个列选了0个1和1个1即可。原创 2017-12-05 16:04:55 · 338 阅读 · 0 评论