自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 dp——P1049 装箱问题(滚动数组)

一、 题目描述1、题目描述有一个箱子容量为V(正整数,0≤V≤20000),同时有nn个物品(0<n≤30,每个物品有一个体积,正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。2、输入格式1个整数,表示箱子容量。1个整数,表示有n个物品。接下来n行,分别表示这n个物品的各自体积。3、输出格式1个整数,表示箱子剩余空间。4、输入输出样例样例输入2468312797样例输出0二、解题思路这一道题是一个明显的01背包 ,如果把这个箱子

2020-07-30 17:10:26 303

原创 dp——poj2.6基本算法之动态规划【4978:宠物小精灵之收服】

一、题目描述题目链接二、解题思路这道题目一看就是最优子结构的问题,当然,也是类似于背包的一种动态规划,叫做多约束背包,这种背包有多个约束(当然,看上去和01背包很相似,都是一个物品只能选择要或者不要),如皮卡丘体力的约束、野生小精灵数量的约束、精灵蛋的约束。是所以这类背包是与01背包不同的。1、数学建模因为本道题目只有3个约束,所以,就要设置一个三维数组:dp[i][j][k]代表前i个野生小精灵,假如皮卡丘有j的体力值,小智有k个精灵蛋时最多能获得的精灵数量。因为这道题目还要求如果可以收

2020-07-29 21:39:57 499

原创 dp——poj2.6基本算法之动态规划【2728:摘花生】

一、题目描述题目链接二、解题思路因为只是一道多阶段最优化决策问题,虽然它长得有点像dfs或者bfs,但是用那两种方法就会无情的超时,此时注意:dijkstra的话可以返回(就是它会把所有的花生都算上),结合这四种算来看,动态规划的做法是最优的,所以就要采用动态规划来做这道题。1、数学建模令dpi,j表示第i行,第j列的最多可以获得的最多的花生的数量。dp数组12112248ans=dp2,2=8dp数组1231259

2020-07-28 21:25:39 490

原创 dp——「一本通 1.3 例 1」数的划分

dp——「一本通 1.3 例 1」数的划分一、题目描述题目链接二、解题思路题目说这是一道搜索的题,可能最近写动态规划写多了,但我惊奇的发现,这也是一道多阶段决策最优化问题,于是,就开始写动态规划的代码。【数学建模】令dpi,j代表用j个数字的和为i的种数。dp数组1231100211031114121512261337134ans=dpn,m=dp7,3=4【状态转移方程】1、从表格

2020-07-27 18:13:20 231

原创 dp——多约束背包

dp——多约束背包一、题目描述题目N件物品和一个容量是 V的背包,背包能承受的最大重量是 M。每件物品只能用一次。体积是 vi,重量是 mi,价值是 wi。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价值。输入格式第一行三个整数,N,V,M,用空格隔开,分别表示物品件数、背包容积和背包可承受的最大重量。接下来有 N 行,每行三个整数 vi,mi,wi,用空格隔开,分别表示第 i 件物品的体积、重量和价值。输出格式输出一个整数,

2020-07-27 13:38:03 1674 1

原创 贪心——「一本通 1.1 例 5」智力大冲浪

「一本通 1.1 例 5」智力大冲浪一、题目描述题目链接二、解题思路用官方的词语解释:这是一个带期限和罚款的单位时间任务调度的问题,需要使用贪心。其实带期限和罚款的单位时间任务调度问题是有时间期限和罚款(奖励),的一类问题,要求解的是在区间时间段内所能够达到的最多的奖励(最少的罚款)。这虽然是一个最优子结构的问题,但是也可以使用贪心来求解。【贪心策略】1、排序因为要求解最少数量的罚款,那么就一定要先解决罚款数量多的项目。为了方便起见,可以先把罚款的金额从大到小排序。这样,就可以直接顺序处理

2020-07-27 12:29:28 432

原创 Dp——最长上升子串、最长上升子序列

最长上升子串一、题目描述描述一个数的子串bi,当b1 < b2 < … < bS的时候,我们称这个子串是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子串(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。如:对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子串,如(1, 7), (3, 5, 9)等等。这些子串中最长的长度是3,比如子序列(3, 5, 9).

2020-07-24 21:27:34 728 1

原创 贪心——「一本通 1.1 练习 2」数列分段

「一本通 1.1 练习 2」数列分段一、题目题目链接:数列分段二、解题思路虽然题目标注的是贪心,但是,我觉得,用动态规划可能会更简单一点。【数学建模】令dp[i]代表从1开始到第i个结束最少要分成的段数。n=5,m=6。A数组下标dp数组411221432543153ans=dp[n]=3【状态方程】如果sum+A[i]<=m,则dp[i]=sp[i-1];sum+=A[i];否则,dp[i]=dp[i-1

2020-07-24 20:27:40 161

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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