- 博客(29)
- 收藏
- 关注
原创 Prim模板
通过这段代码和对Prim算法的探讨,我们不仅加深了对这一经典算法的理解,还体会到了算法在解决实际问题中的应用。Prim算法以其简洁和高效,在图算法中占有一席之地,是理解和掌握图论基础的关键步骤。希望这篇博客能够帮助你在探索图算法的旅程中迈出坚实的一步。
2024-02-09 22:41:09
429
原创 SPFA算法模板
SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。SPFA 最坏情况下时间复杂度和朴素 Bellman-Ford 相同,为 O(VE)。
2024-02-08 01:16:35
584
原创 Bellman-Ford模板
贝尔曼-福特算法(Bellman-Ford)是由理查德·贝尔曼(Richard Bellman) 和 莱斯特·福特 创立的,求解单源最短路径问题的一种算法。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。它的原理是对图进行V-1次松弛操作,得到所有可能的最短路径。其优于迪科斯彻算法的方面是边的权值可以为负数、实现简单,缺点是时间复杂度过高,高达O(VE)。但算法可以进行若干种优化,提高了效率。
2024-02-08 01:06:43
365
原创 Hash表模板
一般就是开一个数据是需要输入数据的两到三倍(N)的数组,然后找到一个比较N比较近的质数,来处理数据,然后只要现在处理的数据与之前的数据存在重合就往后找位置直到找到一个空的位置。使用一个邻接表来存储这个节点可能重复的数据。
2024-01-30 11:30:40
334
原创 欧几里得算法模板(gcd)
注意这段代码变量da,xiao对变量的大小要求不是很严,就是如果你输入的xiao比da的数大,依旧可以通过走一次while的过程,将两个变量的大小进行调换,从而继续辗转相除。因为我们这是写程序,还要防止爆int所以求的时候我们一般稳一点就采用先除再乘的原则(和求平均数大同小异),即。同时有人可能小学时学过的奥数也学过辗转相除法也可以得到GCD,这里就不详细讲了,有兴趣的自己百度一下吧。这边对上面的名称做一下解释,LCM是指最小公倍数,GCD是指最大公约数。c++库algorithm自带gcd函数。
2024-01-26 21:12:10
876
原创 KMP模板
KMP算法是一个用来解决字符串配对的一个算法,其思想就是通过对作为模板的字符串进行遍历找到当前匹配的字符串的前缀和后缀相等的最大长度,从而得到一个最短移动的距离,使得字符串在匹配不成功时能高效的进行下一次匹配,其时间复杂度是O(n),基本上操作就是每次遍历一个匹配串的字符,所以十分高效。
2024-01-24 19:17:23
333
1
原创 选做题Week1
/继续往前找//如果相等,说明这个字符属于LCScin.tie(0);for(i=1;i<=n;j<=m;j++)//dp数组是用来判断x,y数组的关系//LCSprint(n,m);//以栈的形式输出(逆向输出)return 0;
2024-01-15 16:33:16
887
原创 必做题Week11
甲,乙两个人玩 nim 取石子游戏。nim 游戏的规则是这样的:地上有n堆石子(每堆石子数量小于104),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取。每次只能从一堆里取。最后没石子可取的人就输了。假如甲是先手,且告诉你这n堆石子的数量,他想知道是否存在先手必胜的策略。
2023-12-23 01:11:28
789
1
原创 必做题Week7
机器猫被困在一个矩形迷宫里。迷宫可以视为一个n×m矩阵,每个位置要么是空地,要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。机器猫初始时位于11的位置,问能否走到nm位置。
2023-11-20 21:56:54
216
1
原创 必做题Week5
辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。如果你是辰辰,你能完成这个任务吗?
2023-11-07 21:00:56
84
原创 Week3必做题
int a[N];int n, k;i++)j >= 1;j--)//每次判定一下防止爆int,而且取模并不会影响结果//多余了这个取模return 0;
2023-10-26 15:42:58
45
原创 Week2必做题
思路:通过贪心可知要离中点越远的人越无法影响到离中点近的人,只要以中点为分解点把人分成两边后,让离最近并且在他的一边走完就是最短时间;同理要时间最长则要离自己所在端最近的人往另一端跑即可【实际上会碰面】(因为题目说两个人碰面后会向反方向跑,则可以等价为两人没反向,而是一直向前跑)其他人只要在最远的人碰面后的区间内走就行。
2023-10-17 20:47:21
38
原创 NEUQ-ACM预备队必做题Week1
思路:该题最大的最近距离最大就是(l+r)/2,如果c越大,则相隔的最近距离会减小,符合单调性,同时可能有存在不同的最近距离都符合相同的c,则可以用二分。思路:排序后相邻两数的差之间存在倍数关系只要找到其中的最大公约数,题目就好做了。思路:找到表达这个题目所要求性质的check就ok。思路:模板题纯纯套模板。
2023-10-10 20:06:54
87
3
原创 C语言常见概念(中)
6.main函数每个 C 语⾔程序不管有多少⾏代码,都是从main函数开始执⾏的,main函数是程序的⼊⼝,main。main前⾯的int表⽰main函数执⾏结束的时候返回⼀个整型类型的值。所以在main函数的最后写return 0;正好前后呼应。•main函数是程序的⼊⼝•main函数有且仅有⼀个•即使⼀个项⽬中有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)7.printf和库函数printf。
2023-07-31 19:46:01
26
1
原创 C语言分支循环语句(2)
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀。注意:每⼀个 case 子句中的代码执⾏完成后,不会直接结束,而是继续向下进行读取,如果想让switch语句停下,则需要在case语句后面加上break,才能跳出switch语句。
2023-07-27 11:58:15
41
1
原创 C语言分支循环语句(1)
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。
2023-07-25 21:33:20
53
原创 C语言常见概念(上)
人与人之间的交流需要通过语言。中国人之间用汉语,英国人之间用英语,等等。人与计算机之间的交流同样也需要语言,这就是计算机语言,而C语言就是众多计算机语言之一。
2023-07-23 23:49:33
41
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人