
算法提高
文章平均质量分 83
AcWing算法提高课笔记和各题分析总结
辰chen
上海科技大学计算机科学与技术专业学硕
展开
-
ACM-ICPC算法汇总【提高篇】
本篇博客包含ACM,NOIP所涉及的提高算法,涵盖六个模块:搜索,图论,动态规划,数学知识(数论),高级数据结构,基础散发。涵盖内容范围较为全面,是面向有一定算法基础的同学的算法汇总。因为是面向算法竞赛,本文的所有设计算法都是用C++进行实现的,不提供其他语言的代码,共涉及约219道算法题目,以题代讲,在题目中理解算法的内涵。学本文之前建议先修:ACM-ICPC算法汇总【基础篇】原创 2021-06-21 19:58:59 · 2214 阅读 · 3 评论 -
动态规划—区间DP
AcWing算法提高课内容,本文讲解 动态规划本篇包括以下题目:AcWing 1068. 环形石子合并AcWing 320. 能量项链AcWing 479. 加分二叉树AcWing 1069. 凸多边形的划分写博客有哪里不完善的地方或者有哪里表达错误希望大家提出来,博主会立即改正!望大家海涵本文需要先自修基础:区间DP原创 2022-03-30 22:24:28 · 1328 阅读 · 0 评论 -
背包问题求方案数
AcWing算法提高课内容,本文讲解 动态规划本篇包括以下题目:AcWing 11. 背包问题求方案数AcWing 1023. 买书AcWing 1021. 货币系统AcWing 532. 货币系统写博客有哪里不完善的地方或者有哪里表达错误希望大家提出来,博主会立即改正!望大家海涵本文需要先自修基础:背包问题注:本文中的所有代码全部为优化后的代码,且不提供优化解释,解释请见:背包问题,其中有详细的解释。原创 2022-03-25 17:15:50 · 3128 阅读 · 1 评论 -
分组背包问题与背包问题求具体方案
AcWing算法提高课内容,本文讲解 动态规划本篇包括以下题目:AcWing 12. 背包问题求具体方案AcWing 9. 分组背包问题AcWing 1013. 机器分配AcWing 734. 能量石写博客有哪里不完善的地方或者有哪里表达错误希望大家提出来,博主会立即改正!望大家海涵本文需要先自修基础:背包问题注:本文中的所有代码全部为优化后的代码,且不提供优化解释,解释请见:背包问题,其中有详细的解释。原创 2022-03-24 18:16:48 · 1895 阅读 · 0 评论 -
多重背包问题
AcWing算法提高课内容,本文讲解 动态规划本篇包括以下题目:多重背包问题 I多重背包问题 II多重背包问题 IIIAcWing 1019. 庆功会写博客有哪里不完善的地方或者有哪里表达错误希望大家提出来,博主会立即改正!望大家海涵原创 2022-03-22 19:19:49 · 721 阅读 · 3 评论 -
01背包问题及二维费用背包问题
AcWing算法提高课内容,本文讲解 动态规划本篇包括以下题目:AcWing 423. 采药AcWing 1024. 装箱问题AcWing 278. 数字组合AcWing 8. 二维费用的背包问题AcWing 1020. 潜水员AcWing 1022. 宠物小精灵之收服写博客有哪里不完善的地方或者有哪里表达错误希望大家提出来,博主会立即改正!望大家海涵本文需要先自修基础:背包问题注:本文中的所有代码全部为优化后的代码,且不提供优化解释,解释请见:背包问题,其中有详细的解释。原创 2022-03-17 18:10:09 · 2130 阅读 · 1 评论 -
动态规划--最长上升子序列模型
文章目录一、前言二、AcWing 1017. 怪盗基德的滑翔翼1.题目2.逻辑解释3.AC代码三、AcWing 1014. 登山1.题目2.逻辑解释3.AC代码四、AcWing 482. 合唱队形1.题目2.逻辑解释3.AC代码五、AcWing 1012. 友好城市1.题目2.逻辑解释3.AC代码六、AcWing 1016. 最大上升子序列和1.题目2.逻辑解释3.AC代码七、AcWing 1010. 拦截导弹1.题目2.逻辑解释3.AC代码八、AcWing 187. 导弹防御系统1.题目2.逻辑解释3..原创 2021-12-16 10:53:11 · 1675 阅读 · 0 评论 -
动态规划---数字三角形模型
文章目录一、前言二、AcWing 1015. 摘花生1.题目2.逻辑解释3.AC代码三、AcWing 1018. 最低通行费1.题目2.逻辑解释3.AC代码四、AcWing 1027. 方格取数1.题目2.逻辑解释3.AC代码五、AcWing 275. 传纸条1.题目2.逻辑解释3.AC代码一、前言AcWing算法提高课内容,本文讲解 动态规划 第一讲:数学三角形模型本篇包括以下题目:AcWing 1015. 摘花生AcWing 1018. 最低通行费AcWing 1027. 方格取数Ac.原创 2021-11-27 22:14:22 · 1160 阅读 · 0 评论 -
双端队列广搜
文章目录前言一、双端队列广搜二、AcWing 175. 电路维修本题解析:AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:双端队列广搜,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、双端队列广搜双端队列主要是解决边权只有 0 和 1 的这类问题,我们把边权为 0 的边加入到对头,把边权为 1 的边加入到队尾,同堆优化版的 Dijkstra 一样,只有在出队的时候才能知道最小值二、AcWing 175. 电路维修本题链接:AcWing 175. .原创 2021-05-28 17:32:29 · 1037 阅读 · 3 评论 -
DFS之剪枝与优化
文章目录前言一、剪枝二、例题,模板AcWing 165. 小猫爬山本题解析AC代码AcWing 166. 数独本题解析AC代码AcWing 167. 木棒本题解析AC代码AcWing 168. 生日蛋糕本题解析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:DFS之剪枝与优化。一、剪枝剪枝是dfs中的一个操作,我们知道不论是dfs还是bfs,都是十分暴力的搜索方式,都是按照一个固定的搜索方式对所有的情况暴力的枚举,并从中找到我们所求的解,对于dfs而言,我们有一个优.原创 2021-05-28 14:55:39 · 5130 阅读 · 1 评论 -
IDA*
文章目录前言一、IDA*二、例题,代码AcWing 180. 排书本题解析AC代码AcWing 181. 回转游戏本题解析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:IDA*,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、IDA*和A*算法一样,IDA*算法也是利用贪心的思想进行对dfs的优化,其算法思想和A*算法相似,都是利用一个估价函数去进行优化,A*算法见博客:A*。二、例题,代码AcWing 180. 排书本题链接:AcWing .原创 2021-05-26 23:16:52 · 1231 阅读 · 2 评论 -
双向DFS
文章目录前言一、双向DFS二、AcWing 171. 送礼物本题解析AC代码三、时间复杂度前言一、双向DFS和 双向广搜 原理一样,都是在数据十分庞大的情况下用两端同时搜索的方法去搜索得到最优解,具体原理可见博客:双向广搜二、AcWing 171. 送礼物本题链接:AcWing 171. 送礼物本博客提供本题截图:本题解析用到了二分法,二分法的模板和原理见博客:二分法,我们的思路是让物品一半去打表计算可能的组成的组合,我们是按照正好取半去分两组dfs,其实可以根据分析题意让其中更加.原创 2021-05-26 01:30:58 · 1602 阅读 · 0 评论 -
迭代加深(DFS)
文章目录前言一、迭代加深二、AcWing 170. 加成序列本题解析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:迭代加深,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、迭代加深dfs中的迭代加深和bfs十分的类似,定一个搜索上界,然后利用剪枝去进行优化,进而实现迭代加深二、AcWing 170. 加成序列本题链接:AcWing 170. 加成序列 本博客提供本题截图:本题解析令一开始的搜索层数为1,如果没有搜到结果的话,我们就让层.原创 2021-05-26 00:08:25 · 1594 阅读 · 0 评论 -
DFS之搜索顺序
`dfs`是一种十分暴力的方法,我们在搜索的过程中可能会有很多的优化,比如剪枝或者按照组合数的形式去搜索,是否需要恢复现场也是我们需要注意的问题。本文共讲解三道dfs例题:马走日,单词接龙,分解质因数;以题代讲,读者在读题的过程中理解算法。也请读者务必自己独自的敲写一遍本文相关代码,唯有如此才可以理解代码。原创 2021-05-24 00:40:34 · 1120 阅读 · 0 评论 -
DFS之连通性模型
文章目录前言一、DFS二、例题,代码AcWing 1112. 迷宫本题分析AC代码DFSBFSAcWing 1113. 红与黑本题分析AC代码DFSBFS三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:DFS之连通性模型,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、DFS深度优先搜索,基础的模板我们已经讲过,见:DFS,在这里不做过多赘述,本文主要针对一些dfs的类型题目做相应的讲解二、例题,代码AcWing 1112. 迷宫本题链接:AcWing.原创 2021-05-23 18:30:41 · 849 阅读 · 0 评论 -
A*
文章目录前言一、A*二、例题,代码AcWing 179. 八数码本题解析AC代码AcWing 178. 第K短路本题解析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:A*,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、A*bfs是一种非常暴力的算法,我们在双向广搜中鸭说过,如果我们的搜索数量极其的大的时候,我们再使用bfs的时候,就很有可能会TLE,在此我们讲解A*算法,A*算法其实是“BFS + 贪心”,在搜索过程中,我们用一个估价函数对当前的情.原创 2021-05-23 11:28:37 · 858 阅读 · 0 评论 -
双向广搜
文章目录前言一、双向广搜二、AcWing 190. 字串变换本题分析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:双向广搜,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、双向广搜双向广搜其实就是两个bfs,我们知道bfs是一种暴力的做题方法,搜索树长下图所示:我们会发现搜索树越来越宽,每一层的搜索量增加,如果数据范围很大的话,显然是会TLE的,那么为了避免TLE,我们可以采用双向广搜,即两个bfs,如下图所示:这个样子就可以省去很多不必要的.原创 2021-05-22 22:57:41 · 1780 阅读 · 1 评论 -
最小步数模型
文章目录前言一、最小步数二、AcWing 1107. 魔板本题分析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:最小步数模型,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、最小步数本质上也是最短路的模型,在记录的时候用到哈希表。二、AcWing 1107. 魔板本题链接:AcWing 1107. 魔板本博客提供本题截图:本题分析本题分了多个函数去写,使读者看起来更容易,注意reverseres数组之后再输出,三个move函数对应题给.原创 2021-05-22 14:29:26 · 696 阅读 · 0 评论 -
多源BFS
文章目录前言一、多源BFS二、AcWing 173. 矩阵距离本题分析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:多源BFS,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、多源BFS拿例题来讲,本题求的是每一个点距离数字为1的点的最短距离,而一个图中存在多个为1的点,这样来看的话,如果我们和普通的bfs解法一样,只把第一个为1的点放入队列之中去更新其他点的距离的话,显然是不和法的,所以我们要把所有为1的点都加入到队列之中,这种做法,我们称之为多源.原创 2021-05-22 03:14:18 · 649 阅读 · 0 评论 -
最短路模型
文章目录前言一、最短路二、例题,代码AcWing 1076. 迷宫问题本题分析AC代码AcWing 188. 武士风度的牛本题分析AC代码AcWing 1100. 抓住那头牛本题分析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:最短路模型,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、最短路我们在算法基础部分已经说明了几种计算最短路的方式:Dijkstra,bellman-ford,spfa,Floyd,我们也可以通过bfs去计算最短路(边权一样).原创 2021-05-22 02:35:00 · 1803 阅读 · 3 评论 -
Flood Fill
文章目录前言一、Flood Fill二、例题,代码AcWing 1097. 池塘计数本题分析AC代码AcWing 1098. 城堡问题本题分析AC代码AcWing 1106. 山峰和山谷本题分析AC代码三、时间复杂度前言复习acwing算法提高课的内容,本篇为讲解算法:Flood Fill,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。一、Flood FillFlood Fill算法是搜索的算法中的一种,用来解决类似田地覆盖这么一系列问题,算法核心是BFS二、例题,代码AcW.原创 2021-05-21 22:46:32 · 891 阅读 · 0 评论