AcWing算法提高课学习笔记
文章平均质量分 76
以此记录Acwing算法提高课的题目
chase__young
这个作者很懒,什么都没留下…
展开
-
第三章 图论(单源最短路的综合应用)
1.对于答案x,需要满足的性质就是从1走到n需要经过大于x的边数小于等于k,作为分界点,此时大于xx的边数应该等于k。2.对于答案右边的区间,x变大了,大于x的边数就会减小,即大于x的边数小于k,同样满足性质;2.对于答案左边的区间,x变小了,大于x的边数就会增加,即大于x的边数大于k,不满足性质。时,由于不是拓扑图,状态的更新可能存在环,因此不能使用动态规划,只能使用求最短路的方式。= 10,则有可能存在 6 的价格是11, 但 7 的价格是3,那么。从 1 走到 i 的过程中,买入水晶球的最低价格。原创 2022-10-03 15:16:22 · 269 阅读 · 1 评论 -
第二章 搜索(迭代加深 双向DFS IDA*)
双向dfs的思路在于将要搜索的区域一分为二,前一部分暴力枚举将每一种情况存储下来,后一部分对于枚举出的每一个值,通过二分的方式将其与第一部分的dfs相匹配,若满足题意,则更新最大值。迭代加深的模板题,相较于普通的dfs,迭代加深在每次搜索时给定了一个范围上限,若每次在搜索时超出了这个范围上限,那么就会返回false然后允许搜索的深度加1。是每次移动一段序列所能修复节点的最小操作数,每次最多可以修复三个节点,所以需要进行的操作数=待修复节点/ 3上取整。算法的结合版:一方面。原创 2022-09-24 10:44:54 · 740 阅读 · 0 评论 -
第二章 搜索 (DFS之剪枝顺序与优化)
本道题在常规的dfs上多添加了一个剪枝的操作:dfs的参数中枚举的是第几个小猫,dfs内部的循环枚举的是当前用到了第几辆车,最优性剪枝是cnt>=res,优化搜索顺序是先将a数组从大到小排序,优先搜索大的数。本题非常的麻烦和复杂,代码全程高能,具体见注释。本道题的剪枝思路也是异常的复杂,详见。是四道题目里剪枝最复杂的一题,详见。原创 2022-09-23 14:15:51 · 388 阅读 · 0 评论 -
第二章 搜索(DFS之连通性模型,搜索顺序)
因为本题中dfs是为了搜索时候能到达最重点,若一个不可到达最终点,那么也就没有回溯的必要了,所以每个点只会被遍历一次。数组,用于存储编号i为龙头,编号j为龙尾时重合部分的长度。而dfs部分则没有什么难度,注意好字符串拼接即可。而且本题在遍历到一个点的时候,需要对它立刻进行标记,并且在函数快要结束时,恢复现场。本体需要注意的是在恢复现场的过程中需要回溯的时候,本题通过分组按顺序的方式来枚举每一个方案将。,若能,这插入,若不能则新开一个组。一道简单的DFS连通性模型的问题,本道题的解题关键在于。原创 2022-09-21 08:45:38 · 264 阅读 · 0 评论 -
第二章 搜索(Flood Fill,最短路模型,多源BFS)
也是经典的flood fill算法问题,只不过稍微增加了一层包装,关键在于每个数字的意义是什么,具体解释见下图。相比于前面几题,本题的特点是需要输出最短路的路径,因此,在bfs的过程中,需要。我们可以将所有值为1的点初始化为起点,易得最小值为0,同时我们虚拟出一个。,用于记录从起点到达当前位置的距离,其余的都是广搜的模板。还是flood fill的基本模型,问题转换为,,最后按顺序输出即可。,这样最后按序输出的pre数组即为答案。上的bfs,会出现三个方向的状态偏移。,源点到达各起点的距离为-1。原创 2022-09-15 16:47:11 · 155 阅读 · 0 评论 -
第二章 搜索(最小步数模型 双端队列广搜 双向广搜 A*)
其余做法和迪杰斯特拉相同。原创 2022-09-18 13:09:54 · 168 阅读 · 0 评论