算法
文章平均质量分 90
总结常用的算法,纯属兴趣和爱好吧。写这个主要是为了给自己看的,也是为了帮助自己总结,忘了的时候看看,其次也是为了给面试加分的,所以我也不会去教学啥的,
lijiachang030718
这个作者很懒,什么都没留下…
展开
-
算法学习系列(六十二):LCA(最近公共祖先):倍增法、Tarjan算法
关于这个 $LCA$ 问题蓝桥杯这两年考的是也是越来越多了,尤其是去年直接出了个裸题(模板题),也是没想到的,再加上今年省赛 $java$ 组也出了一道与之相关的题,所以今年国赛感觉出的几率也是有的。学下来发现其实也没那么难,又是自己想神秘了,思路和代码总的来说都不是很难,难的是想法,这道题你能否能想到用 $LCA$ 做才是关键,所以本章内容还是采用讲题的策略来进行讲解,就其实都是非常经典的问题,几乎都是模板题,但是我觉得蓝桥杯应该不会出特别难的了,因为本身这个算法就很难,还是要多写写熟即可,继续加油吧!原创 2024-05-15 16:38:48 · 1131 阅读 · 0 评论 -
算法学习系列(六十一):树形DP
关于这个树形 $DP$ 代码其实都是那一套,核心还是在于思维上的难度,关键是这个思路你能不能想明白,想明白了就非常的简单,因为代码几乎长得都差不多,就是某些地方的改变罢了。刚开始学还是很难的,尤其是这种东西还会跟一些其它的算法混在一起,就很讨厌了,所以继续加油吧!原创 2024-05-14 16:17:18 · 804 阅读 · 0 评论 -
算法学习系列(六十):区间DP
关于这个区间 $DP$ ,其实是有套路和模板的,题型的话也是变化不多,感觉就那几种,只不过有些题会用到高精度或者是要记录方案,所以整体来说还是比较容易的了,然后这种题型还是多见的为好,目前也只是会做这几道题。其实关于蓝桥杯只要你暴力都能打满,那么国三是稳了的,如果能做对大概两道题,那么就能拿国二,所以说搞这个 $DP$ 也只是看能不能碰见做过类似的题目,现场解题我是不敢想了,太难的压根做不出来,但也不能完全不学,不是特别难的还是要学,万一出了那就是自己赚了,所以继续加油吧,另外感觉身体累了,也是要合理的休息原创 2024-05-12 15:08:38 · 1006 阅读 · 0 评论 -
算法学习系列(五十九):状态压缩DP
关于这个状态压缩 $DP$ 其实是挺难的,因为本身不好想,并且这个题目的多样性也比较多,一般有两类题:棋盘类和集合类,棋盘类就是精准覆盖问题,用规定的图形把整个棋盘完全覆盖有多少种方案,然后集合类目前见到的问题就是那个旅行问题了。棋盘问题只要学了再写其它类型的还是比较简单的,集合类目前就只会那个最短 $Hamilton$ 路径问题,其实考试估计也是只会这两种问题,再出就不会了,但是怎么说呢,万一出了呢,那就是别人不会我会,那就是赚了。还是得多练,然后搞清楚内在本质,加油吧!原创 2024-05-10 11:55:46 · 942 阅读 · 0 评论 -
算法学习系列(五十八):动态规划—状态机模型
今天学习的是状态机模型,其实学到现在感觉其实我目前的状态不是说要学太多的新东西了,因为基础课提高课有关蓝桥杯的高频考点我基本上都学过,只不过是有些没学过,比如说LCA、强连通分量啥的、欧拉回路之类的,不过这些都基本不太会考,就算考了也只是一两题而已,我不会其他人大概率是不会的,现在主要就是把提高课的一些高频考点刷完,然后回过头来去复习学过的,然后再在此基础上把这些东西给弄得很熟,首先是模板要非常熟,并且要理解,然后就是各种变形题,最后就是对于题型的熟练度,这就要靠对每个知识点进行刷题了,目前的计划就是这样了原创 2024-05-05 16:15:12 · 891 阅读 · 1 评论 -
算法学习系列(五十七):最小生成树应用
在图论中这个最小生成树还是比较的简单的,只有两种算法: $Prim算法,Kruskal算法$ 。一般来说稠密图就用 $Prim算法$ ,稀疏图就用 $Kruskal算法$ ,另外这个 $Prim算法$ 和朴素版的 $Dijkstra算法$ 其实是非常的相像的,思想基本也差不多,唯一的区别就是 $dist$ 数组的不同,最小生成树中 $dist[i]$ 代表点 $i$ 到**集合**中的距离,而最短路中 $dist[i][j]$ 代表的就是两点之间的最短距离,然后剩下的就是模板了,本章内容也没啥难的,背包问题原创 2024-05-04 17:49:46 · 703 阅读 · 0 评论 -
算法学习系列(五十六):背包模型(四)
今天是背包模型的最后一节了,总的来说对于背包问题的理解感觉能更加的透彻了些,主要是在进行决策的那一重循环上,感受到了是在对每一个体积放物品的过程,还是一个数学推到的过程,要不然很难想象这整个过程,反正数学能够证明每一次状态计算都是合法的,感觉也有点像贪心吧,就是上一个最优的决策可以影响现在最优决策,感觉有点像。然后还是得继续刷题,这样知识点啥的才能融会贯通,加油吧!原创 2024-05-04 16:16:18 · 1020 阅读 · 0 评论 -
算法学习系列(五十五):背包模型(三)
今天介绍的是背包模型,还是以题目的形式来介绍的。主要讲了背包问题求方案,就是由最优方案递推回去即可。还有就是一些比较经典的背包问题,其实明显能感觉到其实背包问题拿暴搜来做也是可以的,因为有些问题就是在中间夹杂着暴力枚举所有方案的思想,再加上数据范围小的,就可以拿暴搜来做。还有图论问题,求方案就是求一个拓扑序的一个过程,只不过要根据一些值来确定其是否存在入度,然后找方案,然后感觉这些东西一下子活起来了,题做得多了就会有这种感觉,继续加油吧!原创 2024-05-03 17:33:40 · 1074 阅读 · 0 评论 -
算法学习系列(五十四):单源最短路的综合应用
关于这个单源最短路的综合应用,其实最短路问题最简单的就是模板了,这是一个基础,然后会与各种算法结合到一块,就是不再考察单个知识点了,而是各种知识点融合到一块,你一块地方不会,你这道题就做不出来,主要是跟二分、暴搜等算法结合。原创 2024-05-03 10:34:36 · 59 阅读 · 0 评论 -
算法学习系列(五十三):背包模型(二)
今天主要讲的是背包模型二,主要讲的内容是二维费用背包问题和 $01$ 背包、完全背包求方案数的问题,再就是一些背包的一个简单应用问题。感觉难点首先就是背景问题,也就是阅读理解能力,然后就是对这个问题进行抽象出一个模型,然后对其进行变换,其实不难,比我想象的要简单点,是自己又对未知的恐惧了吧,其实还好,一下子看懂肯定是不现实的,一两天甚至三天看懂,我觉得我行,那就继续加油吧!原创 2024-04-27 10:42:19 · 821 阅读 · 0 评论 -
算法学习系列(五十二):单源最短路的建图方式
本来是一直学 $DP$ 着呢,不过我觉得 $DP$ 这种问题太难了,而且不太好做,而且考场上其实能做出来的不是很多,我觉得还是得难易结合,所以打算 $DP$ 和图论这两章一起学,一天学一个。然后今天先讲单源最短路的建图方式,还是以做题为主,然后开始吧。原创 2024-04-26 14:29:59 · 1125 阅读 · 0 评论 -
算法学习系列(五十一):背包模型(一)
关于 [背包问题](https://blog.csdn.net/weixin_60033897/article/details/136075811?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171392988816800182724854%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=1713929888168001原创 2024-04-24 14:47:55 · 926 阅读 · 0 评论 -
算法学习系列(五十):最长上升子序列模型(二)
本章内容讲的是最长上升子序列模型的第二种,基本模型还是以最长上升子序列的优化方法是一个思想,其实还是比较的难想的,并且其序列单调性还是要好好的注意一下,只有台下认真琢磨透,并且写的足够熟练那么考场上才会如鱼得水,加油!原创 2024-04-22 17:28:39 · 461 阅读 · 0 评论 -
算法学习系列(四十九):最长上升子序列模型(一)
今天学习的是最长上升子序列模型,这种模型我觉得就是我之前说过的就是相当于记忆的过程,记住遇到这种题是用这种模型,下次遇见的时候就能知道了,当然也不完全是死记硬背,相当于是一做了大量的练习,然后考试就可以根据之前做过的大概能知道怎么做,不过考试的时候,基本上就是你能做出来的都是之前有做过类似的题目才行,否则是很难想出来的,也是这个过程就是大量的刷题总结,能从实际问题中抽象出模型或者操作,继续加油吧!原创 2024-04-16 15:14:29 · 345 阅读 · 0 评论 -
算法学习系列(四十八):数字三角形模型
今天开始学习进阶版的 $DP$ 问题,还是按照知识点来分,按照题目来进行讲解,这个 $DP$ 问题尤其是算法竞赛是非常容易考的,因为感觉大部分的问题就是一个图论问题,也就是一个搜索问题,而 $DP$ 、网络流这种进阶问题其实就是对暴力枚举所有方案的一种优化,而且数据结构也只是为了某种操作进行的一种优化而已,所以说根本问题就是搜索,高级一点的就是剪枝和 $DP$ ,怪不得蓝桥杯老是考察这两样,因为本质上问题都是这两样。继续加油把!原创 2024-04-15 15:24:05 · 1090 阅读 · 0 评论 -
算法学习系列(四十七):IDA*
之前觉得这个IDA*算法、迭代加深算法很神秘,感觉很难,其实自己学下来感觉其实不难,相反思路非常的简单,清晰明了,我觉得难是因为我之前从来都不写暴力,就算是图论问题我也只写 $BFS$ ,而不写 $DFS$ ,因为前者虽然长但是好写,后者短也不是很难,其实就是自己写得少,再加上之前参加校赛写 $DFS$ 一直没写对,给自己留下了心理阴影了(其实那题本来时间复杂度太高也过不了),所以就处于未知的恐惧,但现在其实迷雾已经慢慢消散了,开始今天的学习了,加油!原创 2024-04-05 12:24:15 · 1393 阅读 · 0 评论 -
算法学习系列(四十六):迭代加深、双向DFS
本文主要讲了, $DFS$ 的另外两种优化,分别是迭代加深和双向 $DFS$ ,思路还是非常清晰明了的,只要会写 $DFS$ 那么这些剪枝和优化其实还是非常的容易的,优化还是建立在你会写暴搜的基础上的,写着写着就会了,加油!原创 2024-04-04 20:00:20 · 918 阅读 · 0 评论 -
算法学习系列(四十五):DFS之剪枝与优化
关于这个 $DFS$ 的剪枝和优化确实难度是非常的大,从我这篇文章的思路和代码量上就能看出来不是一般的难度,而且难度不亚于 $DP$ ,而且这个 $DFS$ 也是花费了我三天的时间才基本把这几道例题给搞懂了,并且这种题就是没有固定的模型和套路,每个题都不一样,只有你多做题,这样在考场上才能想到这道题好像跟之前做过的题有点相似,然后再去套用模型。不可能短时间去创造一种算法,所以还是继续刷题吧,加油!原创 2024-04-02 17:54:48 · 1447 阅读 · 0 评论 -
算法学习系列(四十四):DFS之搜索顺序
本章主要介绍了 $DFS$ 的搜索顺序,就是暴搜,但你怎么去暴搜才能做到不重不漏,这个是个关键,其实还是要具体问题具体分析才行,没有固定的模板,每道题都需要现想才行,所以还是以题目的形式来讲解问题。原创 2024-04-01 21:10:18 · 446 阅读 · 0 评论 -
算法学习系列(四十三):DFS之连通性模型
本篇文章主要介绍一下 $DFS$ 的问题,如果一个问题用 $BFS$ 和 $DFS$ 都能做的话,一般是推荐用 $DFS$ 去做,因为代码比较短。通常这种问题有两类,一个就是连通性模型,就是在图中走,另一类是把一个图当成一种状态去走,看是否能找到最终的状态或者最短步数是多少的问题,就会通过一些特殊的操作去做。本章主要先介绍第一种。原创 2024-04-01 18:07:38 · 422 阅读 · 0 评论 -
算法学习系列(四十二):最短路模型
关于这个最短路问题还是得要好好刷题见题才行啊,不然这个其实模板都是差不多的,就是可能怎么把它转化为 $BFS$ 是个问题,以及能不能想到用也是一个问题,其实就是你做过这种题,那么你就会,就是这样,加油!原创 2024-03-18 19:18:47 · 1045 阅读 · 0 评论 -
算法学习系列(四十一):Flood Fill算法
关于这个 $Flood\ Fill$ 算法,其实我觉得就是一个 $BFS$ 算法,模板其实都是非常相似的,只不过有些变形而已,然后又叫这个名字。关于 $BFS$ 的知识可以参考我之前的博客: [BFS博客链接](https://blog.csdn.net/weixin_60033897/article/details/135564894) 。因为就是一个 $BFS$ 模型,所以该算法还是以讲题为主,那么接下来就开始吧。原创 2024-03-18 16:19:06 · 1102 阅读 · 0 评论 -
算法学习系列(四十):贡献法
关于这个贡献法考的不是很多,主要题型是出现在需要枚举每一个组合这类题,出现的次数较多。没有固定的模板,就是一种思想,跟贪心一样,每个题都是不一样的,还是要具体问题具体分析,所以 见题是很重要的,本文章也是从讲题的方式来讲解。原创 2024-03-09 15:00:01 · 1945 阅读 · 0 评论 -
算法学习系列(三十九):spfa算法判断负环
关于这个算法学习系列,确实大部分的知识点基本上都讲完了,就是讲的非常的宏观,比如说图论的知识,基础的是讲完了,但是更高阶的当然还没写,也还没学,并且目前处于刷题量还不是很大的情况下,还是不要盲目的去学习更难的知识,所以以后的算法学习系列,打算以零碎知识点的方式来写文章,毕竟也写不了像之前那么多的内容了,也太难了。言归正传,今天学习的是如何使用 $spfa$ 算法判断一个有向图中是否存在负环。原创 2024-03-05 17:33:56 · 1104 阅读 · 0 评论 -
算法学习系列(三十八):超级源点问题
关于最短路问题不论是竞赛、找工作、笔试面试、机试考的都是挺多的,所以还是非常的重要,最重要的就是模板首先背过,然后通过刷题见各种各样的题,具体难点就是如何建图、怎么转换问题,关于最短路问题的基础模板,可以参考我之前写过的博客[最短路问题](https://blog.csdn.net/weixin_60033897/article/details/135634508)。原创 2024-03-04 17:04:02 · 670 阅读 · 0 评论 -
算法学习系列(三十七):复杂DP
本章的DP内容主要牵涉到区间DP、树形DP、和记忆化搜索,DP问题没有一个好的模板或者套路,只能说是看题,这种题你会了也就会了,不会也就不会,所以说还是以题目为主来介绍这些DP问题。原创 2024-02-27 12:31:56 · 826 阅读 · 0 评论 -
算法学习系列(三十六):树状数组与线段树
在算法竞赛当中,这个树状数组和线段树用的还是比较多的,树状数组是用来动态的求前缀和的,而线段树的功能是包含树状数组的,相当于一个大砍刀,什么都能做,而且出题点也是比较多的,所以得好好对待好好学啊。原创 2024-02-20 18:32:30 · 906 阅读 · 0 评论 -
算法竞赛常用的库函数
这个竞赛中的一些库还是非常的好用,可以节省代码量和时间,而且在项目和工作面试中知道一些常用的算法还是比较有用的人家已经为我们实现好了,只要记住用起来还是不错的。原创 2024-02-18 23:57:57 · 298 阅读 · 1 评论 -
算法学习系列(三十五):贪心(杂)
上一篇文章也说过了这个贪心问题没有一个规范的套路和模板,主要还是因题而异,到了考场上基本是靠猜,所以本篇文章主要还是以讲题为主。原创 2024-02-18 23:01:56 · 520 阅读 · 0 评论 -
算法学习系列(三十四):区间问题(贪心)
这个区间问题其实是个贪心问题,说起这个贪心问题,其实没有什么套路模板可言,就是多做题,这道题你做过类似的,那么你就可以AC,否则都是空谈。所以该篇主要还是以例题为主进行讲解。原创 2024-02-18 22:08:27 · 1288 阅读 · 0 评论 -
算法学习系列(三十三):线性DP
这个线性DP其实也就是一种描述吧,有的是一维、二维、多维的,就是这个动规方程是按顺序来的,所以叫做线性,然后还是得按题目来看,把每种题都见过才能有思路,才会写,DP其实没啥思想规范,就是做题见题,才会做题。原创 2024-02-09 07:37:26 · 801 阅读 · 0 评论 -
算法学习系列(三十二):背包问题
从这一篇文章开始,就开始学习动态规划了,也就是DP了,然后就是DP可以说是整个算法中的最难学的部分之一,好写是非常的好写的,每道题也只有很短的代码量,但是主要是它这个动归方程不好想,也不好推导出来,而且这类题都没有一个好的模板,只能说都是通过大量的做题凭经验得出来的,所以说得好好做题,好好思考,话不多说,那就开始吧。原创 2024-02-08 06:52:49 · 1972 阅读 · 0 评论 -
算法学习系列(三十一):组合数
这个组合数的问题还是很常见的,就是问$C_n^m$,然后会根据询问的次数,以及n和m的大小来判断怎么去做。本文用了一写基本的数论公式来进行推导,包括卢卡斯定理等,进行计算。原创 2024-01-31 16:52:55 · 1243 阅读 · 0 评论 -
算法学习系列(三十):高斯消元解线性方程组
这个高斯消元法主要是线性代数的一些东西,然后步骤跟上课讲的步骤是一样的,只不过使用代码实现了而已,在竞赛和笔试中还是有出现的可能的,所以掌握它还是很重要的,话不多说直接开始吧。原创 2024-01-29 19:41:36 · 502 阅读 · 0 评论 -
算法学习系列(二十九):裴蜀定理、扩展欧几里得算法
这个扩展欧几里得算法用的还是比较多的,而且也很实用,话不多说直接开始吧。原创 2024-01-27 20:15:12 · 1821 阅读 · 0 评论 -
算法学习系列(二十八):快速幂、逆元
这个快速幂还是很重要的,算是一个比较基础的问题在数论里面,主要是为了降低时间复杂度用的,然后介绍了逆元的概念以及如何用快速幂来求。原创 2024-01-27 18:16:19 · 766 阅读 · 0 评论 -
算法学习系列(二十七):欧拉函数、欧拉定理、费马小定理
本文主要介绍欧拉函数、线性筛法求欧拉函数,以及公式是怎样推导出来的,并且介绍了欧拉定理,以及费马小定理是怎样被推导出来的。原创 2024-01-27 17:39:25 · 977 阅读 · 0 评论 -
算法学习系列(二十六):约数
本文主要介绍一下数论当中的约数的概念,最大公约数、约数个数、约数之和概念,并用相应的题目来拿代码实现。原创 2024-01-22 18:35:59 · 962 阅读 · 0 评论 -
算法学习系列(二十五):质数
接下来的几篇文章主要用来讲解数学知识,这个数学可谓是很重要的,不论是算法竞赛还是找工作面试,这个数学知识还是会经常考的,主要考察你的思维能力。本文主要介绍了质数的概念、判定、分解质因数、筛质数,然后那就开始吧。原创 2024-01-22 17:24:52 · 460 阅读 · 0 评论 -
算法学习系列(二十四):二分图
这个二分图作为平常我是不怎么知道的,但是在算法竞赛中还是能用得到的。本文主要介绍了染色法:用来判断如否为二分图,匈牙利算法:求出二分图最大匹配数。原创 2024-01-18 22:35:59 · 366 阅读 · 0 评论