刷题巩固
遍历算法提高课,扫除基础知识漏洞
一颗铜豌豆
这个作者很懒,什么都没留下…
展开
-
刷题巩固-----DAY23(浪漫玻璃杯)
【代码】刷题巩固-----DAY23(浪漫玻璃杯)原创 2024-09-13 22:40:35 · 109 阅读 · 0 评论 -
刷题巩固-----DAY22(括号配对)
分析题目,要添加最少的括号是原括号都匹配,因为是求最小值,所以转移是最小的状态,再加上数据范围不超过1e3,我们则使用所以元素初始化为无穷大的二维数组进行状态转移,再套用区间dp的模板。本道题是回文加区间dp,本题可能不是非常纯粹的回文,但是也可以领会一些思路。1070. 括号配对 - AcWing题库。原创 2024-09-12 21:59:50 · 132 阅读 · 0 评论 -
刷题巩固-----DAY21(环形石子合并)
这道题是一道区间dp的模板题,包含了求最大与最小两个考点,分析题干可知,本题是一个环形数据,我们需要对其操作的话,需要将其数组进行延伸变成n*2,后面则套用模板即可,通常区间dp喜欢与回文一起考,明天更新类似例题。本课程系统讲解常用算法与数据结构的应用方式与技巧。活动 - AcWing。原创 2024-09-11 11:24:09 · 281 阅读 · 0 评论 -
刷题巩固-----DAY20(玉米田)
这道题与昨天小国王题目有些差异,小国王是八个方向上不能有第二个国王,本题只有四个方向,但本题通过输入状态,给出了每行特定的非法位置,最后再套用模板即可。今天是状压dp的第二讲,玉米田。通过这两道题基本熟悉了状压dp的基本思路。状压dp基本就是这三步,再根据题意更改一些细节即可。327. 玉米田 - AcWing题库。第三步//枚举每行合法状态,再进行转移。第一步//预处理行内合法状态。第二步//预处理行间合法状态。原创 2024-09-10 11:07:25 · 225 阅读 · 0 评论 -
刷题巩固-----DAY9(庆功会)
今天是背包九讲的第三讲,多重背包问题。废话不多说,直接上闫氏dp法。本课程系统讲解常用算法与数据结构的应用方式与技巧。活动 - AcWing。原创 2024-08-28 22:08:25 · 270 阅读 · 0 评论 -
刷题巩固-----DAY11(二维费用的背包问题)
今天是背包九讲的第五讲,二维费用的背包问题。与差分,前缀和算法相似,01背包问题也有二维问题,与一维的优化方式一样,都是降低维度。在一维背包问题中,是将二维数组降低为一维,然后滚动数组,倒序遍历,而在二维背包问题中,是将三维数组降低为二维,然后滚动数组,倒序遍历。原创 2024-09-01 09:19:08 · 167 阅读 · 0 评论 -
刷题巩固-----DAY2(最低通行费)
题目与摘花生(DAY1)类似,本题虽然没有对行走方向进行限制,但是通过行进时间判断只能走2*N-1个单元格,其实还是每次只能向东或者向西走一格,解题思路与摘花生大概一样,都是线性dp,但是这个题要求的是最小值,所以需要先对f[][]赋极大值,对数据进行分析,表格为正方形,边长最大为100,每个点的值最大也为100,所以极大值为100*100*100,当然直接赋值0x3f也可以;本课程系统讲解常用算法与数据结构的应用方式与技巧。活动 - AcWing。原创 2024-08-21 08:49:21 · 241 阅读 · 0 评论 -
刷题巩固-----DAY3(怪盗基德的滑翔翼)
分析题目可知,这是一个最大上升子序列的模板题,要注意的是,需要正反两个方向都计算一次最大上升子序列取其最大值,因为基德可以向前或者向后一直飞。链接:https://www.acwing.com/activity/content/code/content/112799/商业转载请联系作者获得授权,非商业转载请注明出处。(代码没有保存上,只能上y总的代码了)原创 2024-08-22 08:23:07 · 188 阅读 · 0 评论 -
刷题巩固-----DAY15(背包问题求具体方案)
今天是背包问题的最后一讲(完结撒花),背包问题求具体方案数。题目大概意思为01背包求放入物品的编号字典序最小的方案。本题的数据范围是1000,可以选择二维数组,或者一维数组优化算法,倒序遍历,滚动数组,但是对本题来说,需要在遍历一个方向计算最大值,再遍历另一个方向计算字典序,所以本题需要使用二维数组进行状态转移。原创 2024-09-05 14:02:33 · 155 阅读 · 0 评论 -
刷题巩固-----DAY16(大盗阿福)
对题目进行分析,如果没有对相邻的判断,则为最经典的线性dp问题,该题目需要判断相邻,一维数组无法将所有状态全部存储,所以我们需要设计一个二维容器:f[N][2],分别存储两个状态(1=偷,0=不偷),第 i 项偷的话,状态转移就是从第 i-1 项不偷的状态加上第 i 家商店的金额,如果第 i 项不偷的话,状态转移就是从第 i-1 项不偷与偷之间取最大值,最后输出结果也需要对第 n 项两个状态取最大值。今天开始进行状态机题单刷题,因为之前没有学过状态机,所以,要把状态机的题多刷一下。活动 - AcWing。原创 2024-09-06 11:05:51 · 279 阅读 · 0 评论 -
刷题巩固-----DAY18(股票买卖Ⅴ)
今天是状态机的第三讲,股票买卖Ⅴ,对题目进行分析,本题相较于昨天的股票买卖Ⅳ,没有了交易次数的限制,而是一个冷静期的状态,所以这道题,我们则使用f[ i ][ 3 ]这个容器来进行交易利润的状态转移,0是手上没有且没进冷静期,1是手上有票,2是手上没票进入冷静期,状态转移为。我这一段时间,刷的题都来源于y总的算法提高课,等把提高课过完一遍后,会继续更新力扣的每日一题。本课程系统讲解常用算法与数据结构的应用方式与技巧。活动 - AcWing。原创 2024-09-08 12:15:41 · 154 阅读 · 0 评论 -
刷题巩固-----DAY12(机器分配)
今天是背包九讲中的第六讲,分组背包问题,也是01背包的一种变形,每一组背包都是01背包,最后求最大值。本课程系统讲解常用算法与数据结构的应用方式与技巧。活动 - AcWing。原创 2024-09-02 16:26:52 · 289 阅读 · 0 评论 -
刷题巩固-----DAY13(有依赖的背包问题)
今天是背包九讲的第七讲,有依赖的背包问题。这是一道有难度的题,其实考察的是树形dp,建议去看y总的讲解(我不太懂),这里也附上y总的ac代码。原创 2024-09-03 14:54:58 · 208 阅读 · 0 评论 -
刷题巩固-----DAY8(货币系统)
今天是背包九讲的第二讲,完全背包问题,对题目进行分析,有n种面值的货币,要求凑齐正好m的面值,每种货币都能无限使用,所以我们只需要讲运算数组f[0]设为1,再进行滚动遍历即可。本课程系统讲解常用算法与数据结构的应用方式与技巧。活动 - AcWing。原创 2024-08-27 09:17:01 · 246 阅读 · 0 评论 -
刷题巩固-----DAY17(股票买卖Ⅳ)
对于此题,我们则使用f[N][M][2]容器进行状态转移,将f[ i ][ j ][0/1]视为,从第1个物品到第i个物品,交易了j次,手上有没有股票(有票=1,无票=0),如果手上有票,可以从f[ i-1][ j ][1]:前一项有票同一交易次数转移过来或者从f[ i-1][ j ][0] - w[ i ]:前一项无票同一交易次数减去当前股票的价格转移过来(买入操作不改变交易次数,卖出改变交易次数),取二者最大,反之同理。今天是个状态机的第二讲,有了昨天和今天两道题的铺垫,能够对状态机有初步的认识。原创 2024-09-07 16:56:07 · 140 阅读 · 0 评论 -
刷题巩固-----DAY7(采药)
今天是背包九讲的第一讲,01背包问题,也是非常基础的问题,核心思想就是。423. 采药 - AcWing题库。最后在进行优化,滚动数组,倒序遍历。原创 2024-08-26 08:50:57 · 216 阅读 · 0 评论 -
刷题巩固-----DAY4(登山)
对题目进行分析,是对线性dp中的最长上升子序列的一个变形,队员们希望先上山再下山,求最多的浏览景点,与day3(怪盗基德的滑翔翼)类似,都需要从正反两个方向进行操作,将每个位置正反两个方向的最多浏览景点数相加再减一,就是已该点作为上山的最后一个点的全程浏览景点数。原创 2024-08-23 10:41:42 · 187 阅读 · 0 评论 -
刷题巩固-----DAY1(摘花生)
链接:https ://www.acwing.com/activity/content/code/content/112796/题目大致就是线性dp变形,与数字三角形考点相同,但是需要将矩阵看为两个三角形。商业转载请联系作者获得授权,非商业转载请注明出处。整体代码为(转自y总)原创 2024-08-20 08:32:15 · 115 阅读 · 0 评论 -
刷题巩固-----DAY6(最长上升子序列和)
这道题的题目虽然有最长上升子序列,但是却不是用最长上升子序列的办法来做的,因为要求从一个上升子序列的和最大,感觉更像01背包的做法。本课程系统讲解常用算法与数据结构的应用方式与技巧。这道题是最后一道刷的lis题,下周开始刷背包九讲。活动 - AcWing。原创 2024-08-25 10:22:01 · 211 阅读 · 0 评论 -
刷题巩固-----DAY10(混合背包问题)
这道题的关键点在于01背包看成最多只能用1次的多重背包,然后再分别套用完全背包和多重背包的模板即可。今天是背包九讲的第四讲,混合背包问题。混合背包问题相当于前三讲的综合。原创 2024-08-31 16:08:55 · 136 阅读 · 0 评论 -
刷题巩固-----DAY5(导弹防御系统)
对题干进行刨析,就是输入多组数据,求每组数据可拆分成严格单调上升子序列与严格单调下降子序列之和最小,如果直接沿用最长上升子序列模板的话,是不合适的,我们需要对模板进行优化,up[k]储存第k组上升子序列的末尾元素,down[k]储存第k组下降子序列的末尾元素。在整个过程中,我们先枚举每个数,先枚举将该数放到up[]中,还是down[]中,如果放到up[]中,则枚举该数到底要放到哪组上升序列后面,反之,枚举该数放到哪组下降序列后面。但是再拓展节点时存在贪心策略,降低了时间。再此附上一瞬流年丶涅槃的代码。原创 2024-08-24 10:21:16 · 174 阅读 · 0 评论 -
刷题巩固-----DAY14(背包问题求方案数)
今天是背包九讲的第八讲,背包问题求方案数,这道题其实跟day8货币系统类似,用01背包计算最值,用g数组记录路径,具体可以看“一只野生彩色铅笔”大佬的讲解。11. 背包问题求方案数 - AcWing题库。原创 2024-09-04 10:27:03 · 170 阅读 · 0 评论 -
刷题巩固-----DAY19(小国王)
状态机还剩两道题,但是难度比较大,涉及到ac自动机模型,我做这个专栏是为了查漏补缺,难度大的题将放到第二轮刷题进阶计划中。今天开始状压dp的更新,大概会刷三道题,因为一开始学的时候,学的不是很明白,现在多刷两道题补一下。这道题首先枚举在一行当中所有合法的状态,再计算任意一行的合法状态,对应多少个合法状态,状压dp有一个基础知识,就是位运算操作,我们先复习一下位运算。最后再枚举行数,国王数,和合法状态的三重循环计算方案数。本课程系统讲解常用算法与数据结构的应用方式与技巧。活动 - AcWing。原创 2024-09-09 10:18:54 · 310 阅读 · 0 评论