动态规划
动态规划题目
Joker__Wa
这个作者很懒,什么都没留下…
展开
-
天梯赛练习——Favorite Color Stripe (30分)(最长上升子序列)
题目: 分析: 对于输入的n种颜色,将输入的颜色从1开始依次编号,在输入长度为L的序列时,将其转换为对应的颜色下标编号,那么问题就会转换为最长上升子序列的问题 对于长度为L的序列,求最长上升子序列,容易得知,在长度相同的最长子序列的情况下,最后一个的数越小,这个序列在最后可能形成的序列就越长,依据这个性质我们就可以求出最长的子序列 代码: #include <iostream> #i...原创 2020-04-18 20:04:43 · 146 阅读 · 0 评论 -
蓝桥杯——波动序列(动态规划+滚动数组)
题目: 输入输出: 题目分析: 首先假设第一个数为 x,那么后面的数都是在 x的基础上进行加 a或者减 b操作,将这一操作用 P={a,-b}来表示,那么最终的和一定为: x+(x+P)+(x+2P)+...+(x+(n−1)P)=sx + (x+P) + (x+2P) + ... +(x+(n-1)P) = sx+(x+P)+(x+2P)+...+(x+(n−1)P)=s 变换一下上述的等式...原创 2020-03-16 11:19:07 · 195 阅读 · 0 评论 -
蓝桥杯真题——对局匹配(动态规划)
题目: 输入输出: 分析: 可以将所有的分数分为k组,比如说k如果等于2,那么可以分为2组,分别为{0,2,4,…10000},{1,3,5,7,…,9999},那么此时在同一个小组中人才有机会匹配到,不同的小组之间的人不可能匹配到,其次,再使用一个数组val,来统计小组中每一个分数出现的次数,所以此时,我们对于每一个小组使用dp,dp[i]表示在同一个小组中前 i个分数中最多匹配不到的人数,...原创 2020-03-04 19:40:50 · 599 阅读 · 0 评论 -
蓝桥杯真题——地宫取宝(动态规划)
题目: 分析: 由题目容易知道使用动态规划来解决,设定一个四维数组 dp[55][55][15][15],此数组用于存放当前的行动方案数量,由题目给出的数据范围可以推测出设定的数组不会使内存爆炸,dp[i][j][k][c]我们定义为到 (i,j) 这个点时,拿到了k件物品,并且当前的物品的最大价值小于c的方案数,那么可以推测出下面几种情况: 当mat[i][j] > 目前的最大价值...原创 2020-02-29 11:43:55 · 794 阅读 · 0 评论 -
UVA562(01背包问题)
题目大意:两个人分配一堆价格不同的金币,要求最终两人分配的金币差值最小 分析:从题目的分析可知该题要用01背包问题解决,由于两人最终分配的金币差值最小,那么说明两人中的一个人分得的金币肯定要小于或者等于总价格的一半,另一个人分得的金币则是总价格减去上一个人分得的金币数目,既然其中一个人的金币数小于或者等于总价格的一半,则可将问题转化为求两个人中的某一人分到最接近总价格一半的金币价值。 AC代码 #...原创 2019-11-11 19:48:29 · 178 阅读 · 0 评论 -
CodeForces 429B(四角递推+枚举)
题目大意:给定一个能n×m的表格,每个点上有相应的权值,一个人从(1,1)点出发,目标点为(n,m),另一个人从(n,1)点出发,目标点为(1,m),两个人在行走的过程中只能在一个点相遇,求除去这个点之外,他们所经过的点的权值的最大值 分析:通过简单分析,我们可以将题目转化为从四个角出发,到相遇节点的各自的最大值相加,各个角到相遇节点的最大值可以通过递推公式来求出,而题目中又要求必须仅有一个点相遇...原创 2019-11-10 19:38:20 · 157 阅读 · 0 评论 -
HDU1069(经典dp)
题目大意:科学家为了测试猴子的IQ,在屋顶上悬挂一个香蕉,并给定n种类型的木块,每种类型的木块数量没有限制,但是在堆叠木块的时候,位于下面的木块的长和宽必须严格大于上面木块的长和宽,求堆叠的最高的高度 题目分析:通过简单分析可知这道题是用动态规划来做的,而且这道题可以看作是最长递减子序列的变形,首先,从题目中可知,每个木块有三个常量——长 宽 高,每个木块的放置方法有6种,而题目中给出最多有30种...原创 2019-11-09 11:32:08 · 291 阅读 · 0 评论 -
HDU1024(动态规划+滚动数组)
题目大意:把一个数组划分成不相交的m段,使得这m段之和加起来最大。输出最大值。 这道题从题意的分析可知要使用动态规划来做 使用arr[j]来存放第j个数 dp[i][j]的含义:在包含arr[j]的前提下,前i段的最大值,那么我们可以分以下两种情况: 1、arr[j]不是第i段的第一个数,那么此时dp[i][j]就是dp[i][j-1]+arr[j] 2、arr[j]是第i段的第一个个数,那么此...原创 2019-11-09 09:03:05 · 284 阅读 · 2 评论