![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
xingkongyidian
这个作者很懒,什么都没留下…
展开
-
简单DP 总结
1 hdu 1003 最大连续子段和 i) 记录起始和终止坐标情况 dp[i] 前i个数中,以a[i]为结尾的最大连续子段和 dp[n] = max{ dp[i-1] + a[i] , a[i] } ii)只求最大字段和 scanf("%d",&n); scanf("%d",&a); ans=t=a; for(i=1;i<n;i++)原创 2016-10-14 22:14:35 · 308 阅读 · 0 评论 -
典型DP hdu1058 hdu3199
hdu 1058 题目链接点击打开链接 题意:一个数的质因子只包括2,3,5,7 ;例如1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18。求该序列的第n个数。(n 思路 : 每一个数都是 2x , 3x , 5x , 7x 中的一个。根据已经求出的数求未来的。利用四个标记量 分别记录 2 , 3 , 5 , 7 所到达的地方, .每次我们原创 2016-10-13 14:08:07 · 223 阅读 · 0 评论 -
UVA12563 0-1背包变形
题目链接点击打开链接 题意:KTV里面有n首歌曲你可以选择,每首歌曲的时长都给出了. 对于每首歌曲,你最多只能唱1遍. 现在给你一个时间限制t (ttime必须) ? 最终输出num+1 和 time+678 即可. 注意: 你需要优先让歌曲数目最大的情况下,再去选择总时长最长的. 分析:题意是在小于t的时间内,选择哪些歌曲可使得所选歌曲数目最多,在此前提下,所选歌曲原创 2016-08-08 15:19:46 · 210 阅读 · 0 评论 -
uva437 动态规划
题目链接点击打开链接 题意:有n(n 分析:用二元组(a , b)来表示“顶面尺寸为a*b的状态” , 每增加一个长方体后顶面的长宽都会严格减小,所以这个图是DAG,套用DAG最长路算法。因为a,b值过大,所以不能直接用d(a,b)表示状态值。 用(idx , k)来“间接”表示这个状态, idx 为顶面立方体的序号,k是高的序号。 状态转移方程 d(id1 , k1) =原创 2016-08-07 16:22:00 · 306 阅读 · 0 评论 -
最长上升子序列
最长上升子序列是一种线性结构上的动态规划 1 复杂度为o(n*n)的算法 设d(i)为以a[i]为结尾的最长上升子序列的长度,则d(i) = max {0 , d(j) | j 代码为: #include #include #include #include using namespace std; const int maxn = 105 ; int a[maxn] ,原创 2016-08-03 19:58:50 · 254 阅读 · 0 评论 -
hdu 1171
题目链接:点击打开链接 题意:给出每种物品的价值和数量,将这些物品平分给A,B,使得A,B尽可能相等并保证A不小于B 思路1 : 根据题意可得物品最多有100000件,数目不多,可以转化为01背包 #include #include #include #include #include using namespace std; const int maxn = 300005原创 2016-10-15 15:07:54 · 273 阅读 · 0 评论 -
hdu 1421
题目链接点击打开链接 题意: 从n个数中选出k对数,使得每对数差的绝对值的平方和最小。 思路 dp[i][j] 表示从前i个数中选出j对的数的绝对值的差最小。 dp[i][j] = min (dp[i-1][j] , dp[i-2][j-1] + a[i-1]) ; i >= 2*j dp[i][j] = INF i < 2*j #inclu原创 2016-10-13 14:27:53 · 245 阅读 · 0 评论 -
uva 116
题目链接:点击打开链接 #include #include #include #include using namespace std; const int maxn = 105 , inf = 1e9 ; int d[15][maxn] , m , n , a[15][maxn], N[15][maxn] ; int main() { int ans ; //fre原创 2016-08-08 16:09:56 · 282 阅读 · 0 评论 -
UVA 1347
题目链接:点击打开链接 题意:给定平面上n个点的坐标(按照x递增的顺序给出),设计一条路线,从最左边的点出发,到最右边的点后再返回。除了最左边点和最右边点之外每个点恰好经过一次,且路径长度最短。 分析:题意可改成:两个人同时从最左点出发,沿着两条不同的路径出发,最后都到达最右边的点,除了起点和终点外其余每个点恰好被一个人经过。 d(i,j)表示1-max(i ,j) 全部走过,两人当前位原创 2016-08-08 15:36:14 · 524 阅读 · 0 评论