Abner

博观而约取,厚积而薄发,不可择焉不精,语焉不详!

动态规划之详细分析0-1背包问题

题目:   有 N 件物品和一个容量为 V 的背包。第 i 件物品的费用是 w[i],价值是 p[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。   本文按照动态规划的标准模式解析:http://blog.csdn.net/hearthougan/artic...

2016-12-26 01:50:32

阅读数:19663

评论数:11

动态规划总结

  动态规划(Dynamic Programming, DP)思想启发于分治算法的思想,也是将复杂问题化解若干子问题,先求解小问题,再根据小问题的解得到原问题的解。但是DP与分治算法不同的是,DP分解的若干子问题,往往是互相不独立的,这时如果用分治算法求解,那么会对重叠子问题重复进行求解,从而使得...

2016-12-20 04:00:18

阅读数:4633

评论数:0

经典动态规划引例--矩阵链相乘

  这个感觉有必要说一下,因为很多经典的问题都是以它为根基扩展的,譬如:石子合并类型的。       给定由n个要相乘的矩阵构成的序列:<A1, A2, A3···An>,要计算乘积:A1*A2*A3*····An  ---- <...

2014-05-15 13:54:37

阅读数:1520

评论数:0

九度 1011 最大连续子序列

题目来源:http://ac.jobdu.com/problem.php?pid=1011     找出最大连续子段和,如果存在多个,输出起始点最小的那个,这个限制就多需要用两个中间变量qs, qe,来存储每个最大字段的起始点,和终止点,如果存在多个最大和相同的话,这个iStartPos, iE...

2014-05-13 21:03:03

阅读数:816

评论数:0

九度 1390 矩形覆盖

题目来源:http://ac.jobdu.com/problem.php?pid=1390 本题我用两种方法写了一下,一种是状态压缩,另一种是很简单的斐波那契数,规律其实很简单: 不妨设f(n)为:n时的铺设方式数目,则: (1)如果第n行是竖着放时,那么它影响到倒数第二行的放置且只有一种情...

2014-05-13 16:36:18

阅读数:577

评论数:0

Nyoj 983 首尾相连数组的最大子数组和

题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=983 参考:http://blog.csdn.net/hearthougan/article/details/25654383   <strong&a...

2014-05-13 14:58:40

阅读数:784

评论数:0

Nyoj 745 蚂蚁的难题(二)

题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=745 求首尾相接圆环的连续字段最大和与首尾不相接的最大字段和中最大的那一个。   对于一个环状的数组,求其最大的字段和: (1)如果直线型数组(即:首尾不相接的数组)的最大子段和是最...

2014-05-12 21:42:50

阅读数:1198

评论数:0

nyoj 742 子串和再续

题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=742   #include <iostream> #include <algorithm> #...

2014-05-09 15:42:21

阅读数:755

评论数:0

nyoj 740 “炫舞家“ST

题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=740 参考算法艺术与信息学竞赛:http://download.csdn.net/detail/hearthougan/5907359第118页。这里就不再赘述了。   #incl...

2014-05-09 12:45:12

阅读数:954

评论数:0

hdu 4502 吉哥系列故事——临时工计划

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4502 本题是动态规划,dp[i]表示到今天所能挣到最多的钱,dp[i] = MAX(dp[i], dp[j] + a[j+1][i]);其中a[i][j]表示:从i到j天的工资!   #inc...

2014-04-21 20:15:46

阅读数:650

评论数:0

zoj 1100

题目来源:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=100 现在换一种方式来写这个状态压缩 我们先把第0行铺满,然而其余每一行的状态都可以由前一种状态转移而来。我们令第0层全部铺满,只有一种情况,当0 &amp...

2014-04-10 14:42:12

阅读数:649

评论数:0

Nyoj 37 回文字符串

题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=37 用滚动数组对比正常的LCS:http://blog.csdn.net/hearthougan/article/details/21237351 如果本题时间或者空间约束的再严一点,...

2014-04-07 17:17:51

阅读数:617

评论数:0

NYOJ 15 括号匹配(二)

题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=15 这个是很早之前写的,今天又从新敲了一遍!     dp[i][j]表示:从第i个位置到第j个位置至少要添加的括号数目,我们令dp[i][i]表示当前到当前位置至少添加一个括号,假如...

2014-04-07 16:30:12

阅读数:706

评论数:0

Nyoj 791

#include <iostream> #include <cstdio> #include <cstring> using namespace std; i...

2014-03-31 21:52:51

阅读数:673

评论数:0

Nyoj 737 石子合并(一)

石子合并问题,就是矩阵链连乘的一个推广,或者说是变形,因此矩阵链连乘,是一个根基,需要理解透彻 。 因此可参考矩阵链连乘:http://blog.csdn.net/hearthougan/article/details/25834141   #include <ios...

2014-03-29 21:50:02

阅读数:1139

评论数:0

Nyoj 712 探 寻 宝 藏

双线程dp,可以看成两个人同时从同一个地点出发沿着相同的方向出发,要保证保证两个人的线路不能相交!如果人1和人2在相同的行或者相同列,那么他们一定会在相同的列或者行,因此保证他们不在相同的行,就可以保证他们的线路不会相交! dp[k][i][j] 表示:走到第k步,机器人1走到第i行,机器人2走...

2014-03-29 11:41:48

阅读数:621

评论数:0

Nyoj 708 Ones

#include <iostream> #include <cstring> #include <cstdio> using namespace std; co...

2014-03-28 21:35:57

阅读数:731

评论数:0

Nyoj 613 免费馅饼

#include <stdio.h> #include <string.h> #define MAXN 100010 int MAX(int a, int b, int c) { retur...

2014-03-28 17:17:50

阅读数:702

评论数:0

Nyoj 571 整数划分

  第一行:将n划分成若干个正整数之和的划分数        我们设dp[i][j] 表示将正整数i划分成最大数不超过数j的划分数,显然我们有:        (1):如果划分的数中至少有一个有j,则有:dp[i][j] = dp[i-j][j];        (2):如果划分的数中没有j...

2014-03-28 16:01:46

阅读数:618

评论数:0

Nyoj 456

#include <iostream> #include <cstring> #include <cstdio> using namespace std; co...

2014-03-27 20:08:06

阅读数:568

评论数:0

提示
确定要删除当前文章?
取消 删除