
第9章 动态规划初步
文章平均质量分 69
01的世界
有时,失去了才懂得珍惜
展开
-
UVa 1025 例题9-1 城市里的间谍
书上已经分析的很详细了,就不再赘述了。其中dp[i][j]表示在i时刻在j车站,还需要等待的时间。train[maxt][maxn][2]表示是否有往左或者往右开的火车#include#include#include#include#include#includeusing namespace std;const int maxn=55;const int maxt原创 2015-10-23 00:01:54 · 535 阅读 · 0 评论 -
UVa 1347 例题9-3 旅行 (双调欧几里得旅行商问题)
题目大意:给定平面上n个点的坐标(按x的升序),你的任务是设计一条路线从最左边出发,到最右边再返回最左边,每点恰好经过一次。问最小代价。可以看成两个人从最左端同时出发。每点恰有一人经过的最小代价。向上决策:#include#include#include#include#include#includeusing namespace std;const int maxn=55;原创 2015-10-24 23:46:33 · 661 阅读 · 0 评论 -
UVA 437 例题9-2 巴比伦塔 (DAG上的动态规划)
题意;有n种立方体,每种都有无穷多个,要求选一些立方体落成一根尽量高的柱子(可以任选那边作为长宽高),使得每一个立方体的底面长宽严格小于它下方的立方体底面的宽和长。分析:书上讲解的很详细,书上的方法是可以用二元组(a,b)来表示“顶面尺寸长和宽",因为每次增加一个立方体后长和宽都会严格减小,这就构成了DAG最长路算法。不过在写程序的时候,由于a,b,很大,所以不能直接用d(a,b)表示状态值,原创 2015-10-24 22:14:43 · 831 阅读 · 0 评论 -
嵌套矩形问题
从今天开始,准备刷第9章动态规划的题目,先刷上10天左右吧,能刷多少是多少,剩下的以后再战。嵌套矩形问题,先建图,如果两个矩形可以嵌套,连一条边。建完图后,记忆化搜索,状态转移方程是 d(i)=max{ d(j)+1} (i,j)有边,d(i)表示以i为结束的最长路。这是一种解法。还有一种方法是先给矩形排序,再找一条单调递增上升最长子序列就可以了。也比较容易实现#include原创 2015-10-11 23:12:48 · 1674 阅读 · 0 评论 -
UVa 116 例题9-4 单向TSP 多段图的最短路
算法:多段图的动态规划。因为要字典序最小,所以倒着来,设d[i][j]为从(i,j)到最后一列的最小开销,则d[i][j]=a[i][j]+max(d[i+1][j+1],d[i-1][j+1])#include#includeusing namespace std;const int maxn = 100 + 5;const int INF = 1000000000;int m,原创 2015-10-31 00:03:36 · 555 阅读 · 0 评论 -
UVA 1626 - Brackets sequence 区间DP
题目:点击打开链接题意:给你一个字符串,问至少添加多少个字符才能使它成为合法字符,具体的要求见题目,这道题在刘汝佳《算法竞赛入门经典第二版》278页有详细介绍分析:我就不瞎扯了,书上写的很详细啊,需要注意的是输入串有可能是空串,用gets()接受一行字符串#include#include#include#includeusing namespace std;i原创 2015-08-14 22:47:27 · 426 阅读 · 0 评论