动态规划
文章平均质量分 70
咸鱼吖
这个作者很懒,什么都没留下…
展开
-
[动态规划] AT916题解
题目传送门思路dpdpdp 问题题目大意就是给定一个数字 nnn 你可以对他减去 1,2,31,2,31,2,3 里面的任意一个数字,只需要满足在操作过程中 nnn 不等于题目中说明的三个数,最后如果可以使得 nnn 等于 000 就输出 YES,如果不能使得 nnn 等于 000 就输出 NO。读完题目之后,我想到了 dpdpdp 的做法。我们先定义状态 令 dp[i][j]dp[i][j]dp[i][j] 表示第 iii 个数至多操作 jjj 次能否等于 000。如果能,dp[i][j]=1d原创 2021-08-27 20:46:23 · 122 阅读 · 0 评论 -
[背包dp][COCI2011-2012#1] MATRIX
题目传送门思路背包问题。我们假设dp[j]dp[j]dp[j]表示是否能够达到jjj度这个角度,如果可以;dp[j]=1dp[j]=1dp[j]=1,如果不可以,dp[j]=0dp[j]=0dp[j]=0。首先,初始值:dp[0]=1dp[0]=1dp[0]=1。然后,我们来看dp[j]dp[j]dp[j]的状态转移。两种情况:一:如果我们选择了+a[i]+a[i]+a[i],则状态转移为dp[j]∣=dp[j−a[i]]dp[j]|=dp[j-a[i]]dp[j]∣=dp[j−a[i]]。原创 2021-08-03 15:55:31 · 138 阅读 · 0 评论 -
[动态规划]最长锯齿子序列
今天给大家讲最长锯齿子序列思路这个题目是我中学考试比赛题目 不知道为啥我没做对…这个题目一看 就知道是一个线性dpdpdp。首先 我们先定义状态设dp[i][1]dp[i][1]dp[i][1]表示以第iii个数结尾的最长锯齿子序列 初始值即dp[1][1]=1dp[1][1]=1dp[1][1]=1。接着就是状态转移 我们知道 如果在第iii个数以前的某个数jjj 满足第iii个数加入这个以jjj结尾的最长锯齿子序列是合法的时候 dp[i][1]=max(dp[i][1],dp[j][1]+1原创 2021-07-07 17:59:47 · 588 阅读 · 1 评论 -
[背包dp]采药(c++)
今天给大家讲采药这道题话不多说先上题目题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是辰辰,你能完成这个任务吗?输入格式第一行有两个整数T(1 <=原创 2021-03-07 20:20:27 · 737 阅读 · 1 评论 -
[动态规划] 最长上升子序列
今天给大家讲最长上升子序列这道题话不多说 先上题目题目描述对于给定的一个序列,我们可以得到一些上升的子序列,这里。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。你的任务,就是对于给定的序列,求出最长上升子序列的长度。输入格式输入的第一行是序列的长度N(1≤N≤1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。输出格式最长上升子序列的长度。样例样例输原创 2021-03-20 17:35:00 · 369 阅读 · 0 评论 -
[动态规划] 守望者的逃离
时间复杂度你要写的内容O(1)O(1)O(1)1O(logn)O(log n)O(logn)lognO(n)O(n)O(n)nO(nlogn)O(n log n)O(nlogn)nlognO(n2)O(n^2)O(n2)n2O(n3)O(n^3)O(n3)n3O(n4)O(n^4)O(n4)n4O(2n)O(2^n)O(2n)2nO(n!)O(n!)O(n!)n!原创 2021-05-11 21:33:30 · 294 阅读 · 0 评论 -
[动态规划] AT4524 Vacation
今天来给大家讲 Vaction 这道题目题目传送门(洛谷)题意翻译太郎的暑假有nnn天,第iii天他可以选择做以下三种事情:游泳,获得aia_iai点幸福值。捉虫,获得bib_ibi点幸福值。写作业,获得cic_ici点幸福值。但他不能连续两天进行同一种活动,请求出最多可以获得多少幸福值。输入输出样例输入310 40 7020 50 8030 60 90输出210思路这题挺水的,方法也挺多,但是由于本人刚刚学完dpdpdp所以运用了动态规划的方法设dp[i][0]d原创 2021-05-25 15:03:04 · 320 阅读 · 1 评论 -
[区间DP]石子合并
今天给大家讲石子合并思路这题一看就是一个合并类的问题 所以本人最先想到的就是区间dpdpdp按照区间dpdpdp的模板 我们先定义状态:dp[i][j]dp[i][j]dp[i][j]表示合并区间iii~jjj所付出的最小代价。按照惯例第一层循环我们枚举区间长度lenlenlen 从111枚举到nnn第二层循环枚举区间的头iii和尾j=i+lenj=i+lenj=i+len第三层循环枚举区间内一个下标kkk 从iii枚举到jjj这里需要用到前缀和来优化 我们假设sum[x]sum[x]sum原创 2021-06-26 13:22:38 · 77 阅读 · 0 评论