- 博客(32)
- 收藏
- 关注
原创 The 13th Shaanxi Provincial Collegiate Programming Contest 部分题题解
用map容器会导致超时。用map<char,vector<double> >存我们对应符号的vector导致超时。所以较少的vector能不用map,就不用map。
2025-05-25 11:48:52
246
原创 L2-12 关于堆的实现
记录一下这个卡了半个月的题:首先要看清题目,题目说的是每次往堆里加点,所以我们需要每次加点向上调整。我写成了记录初始堆每次向下调整,卡了11分。将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。xxyxyxy。
2025-04-18 20:38:10
323
原创 STL学习之双端队列deque(AI生成版)
在使用deque前,需引入<deque>头文件,同时使用std命名空间。下面是定义deque// 定义一个存储int类型元素的deque// 定义一个包含5个元素,且每个元素初始值为10的dequereturn 0;
2025-04-11 10:47:08
355
原创 (PTA) L2-011-L2-015
L2-012 关于堆的判断 由于没有得到AC代码(1,3测试点错误),这里先不做展示,等后续复盘的时候进行补充。
2025-04-09 18:32:26
1632
原创 图论算法补充--Tarjan求割点
前面讲到过Tarjan算法的在有向图中缩点应用,这里主要讲解一下Tarjan算法在无向图中的应用,即利用Tarjan算法求无向图的割点问题。易知,在无向无环图中,如果节点度数大于等于2,说明它是割点。但是在无向有环图中,上述结论就不可以用了,所以需要利用Tarjan算法来求割点。
2025-04-09 17:49:41
744
原创 数据结构--堆
堆是一棵完全二叉树,树中的每个结点的值都不小于(或不大于)其左右孩子结点的值。其中,,这时每个结点的值都是以它为根节点的子树的最大值;,这时每个结点的值都是以它为根节点的子树的最小值。
2025-04-09 15:56:58
819
原创 图论算法补充--Tarjan求割点(AI梳理版)
在无向图中,割点是指去掉该点及与该点相连的所有边后,图的连通分量会增加的点。比如在一个城市交通网络(可看作无向图 ,节点是地点,边是道路 )中,某个关键地点(割点 )被封锁,会导致原本连通的区域被分割成多个不相连的部分。通过 Tarjan 算法,可以高效地找出无向图中的割点,在网络拓扑分析、通信网络健壮性分析等领域有广泛应用。
2025-04-09 15:53:12
439
原创 合并数列(蓝桥杯)
他采取了其中两种方案,分别将他们列为两个数组 {a1,a2,...,an}{a1,a2,...,an} 和 {b1,b2,...,bm}{b1,b2,...,bm}。只需要将 a2a2 和 a3a3 合并,数组 aa 变为 {1,5,4}{1,5,4},即和 bb 相同。第二行为 nn 个由空格隔开的整数 a1,a2,...,ana1,a2,...,an。第三行为 mm 个由空格隔开的整数 b1,b2,...,bmb1,b2,...,bm。第一行为两个正整数 nn, mm。
2025-04-07 18:49:53
855
原创 数论学习--扩展欧几里得
欧几里得算法大家应该都知道,就是用来求解两个数得最大公因数得算法,即gcd(a,b),利用辗转相除得到结果。而最小公倍数也是在最大公因数得基础上进行求解得。
2025-04-07 00:20:57
631
1
原创 算法入门学习--快速幂
所谓快速幂,就是一种快速求一个数的n次幂的算法,我们常用的求幂的操作是pow(x,n)函数,但是在处理大指数的幂运算时,快速幂算法的性能优势会更加明显,能显著减少计算时间。
2025-04-07 00:18:15
827
原创 __int128_t 的使用
在 C++ 里,标准并未直接提供__int128_t类型,不过部分编译器(像 GCC 和 Clang)对其进行了扩展,这是一种 128 位的整数类型。该类型可处理远超long long范围的整数。下面为你介绍__int128_t。
2025-04-06 10:03:54
324
原创 数论学习笔记:素数筛
关于求素数的,如果只需要求一个素数,可以直接根据定义求。如果是求一个范围内的多个素数,就需要用到素数筛了,常用素数筛就是欧拉筛。
2025-04-06 01:07:04
146
原创 图论学习笔记(6):Tarjan算法(强连通分量/缩点)
Tarjan算法是一种求解有向图中强连通分量的经典算法,其核心思想是基于深度优先搜索,来求有向图的强连通分量的算法。变量名变量类型变量作用g[1010]用于构造图,存每个顶点对应得边ststack<int>用于在深度优先搜索得时候存访问的节点b[1010]bool状态数组,用于判断对于顶点是否入栈tempint时间戳,用于给顶点分配次序号dfn[1010]int节点被搜索的次序号数组,用于记录节点是第几个被深度优先搜索访问的low[1010]int。
2025-03-22 20:45:19
2128
原创 图论学习笔记(5):最小生成树 prim算法 和 kruskal算法
写在开头:如果你学会了Dijkstra,那么prim算法你就也掌握了差不多了,因为prim算法和Dijkstra算法实现思路是一致的,这里就不给大家展示朴素般的prim算法了,想要了解可以去看我的Dijkstra算法讲解,这里直接介绍堆优化版本的prim算法。而kruskal算法,不过是并查集的一个变式。整体都非常好理解。
2025-03-22 15:00:35
866
原创 图论学习笔记(4):Bellman-ford算法和SPFA算法
Bellman-ford算法的实现思路其实是非常简单的。初始时,我们需要构造一个距离数组d[maxn] 和 图结构体 vector<pii> g[maxn](用来存一条边的起点和终点和这个边的边权)。初始时我们令距离数组全为inf。令d[s]=0。接着我们开始进行n-1次(n是顶点数目)松弛操作。每次松弛操作遍历所有的边,如果加入这条边能够使起点到该顶点更近,那么更新距离数组。进行完n-1次松弛操作后,再进行一个边的遍历,检查距离数组还能不能被更新,如果不能被更新了,说明图中没有负权环。
2025-03-22 00:35:11
742
原创 图论学习笔记(3):多源最短路径问题 folyd
folyd算法的思路和实现都特别简单。从 0 到n-1遍历每一个顶点k(作为中间顶点),对于每一对顶点(i, j),检查是否可以通过顶点k作为中间点来缩短从i到j的距离。如果,则更新。
2025-03-19 23:44:58
291
原创 图论学习笔记(2):最短路径问题 Dijkstra算法
操作一:已知图g和起点s,求起点到其他顶点的最短路径的问题。我们一般构造一个顶点集合S,最开始的时候顶点集中只有起点s。然后构造一个距离数组d[maxn],用来存储目前顶点集到各个顶点的距离,如果无法到达该顶点,设置距离为0或者inf(即无穷大),起始状态下d[s]=0。在构造数组 vis[maxn] 来记录顶点的访问状态,初始情况下设置状态 vis[s]=true。然后构造数组 pre[maxn] 用来存到达该顶点最短路径的前驱位置。操作二:构造好了数组,就可以开始进行一次遍历了。
2025-03-19 22:59:07
688
原创 P3916 图的遍历
这个应该是正向思路的一个最容易想到的想法,开始写记忆化的时候,因为没有考虑到每次能成功记忆化的应该只有自己(意思就是,每次进行记忆化搜索后能成功记录起来的数据只有自己),所以全wa。但是思路肯定没有问题,通过记忆化搜索,每个点搜索得到的结果进行记录,于是改进后成功得了70分。也说明思路没问题,只是数据量太大,记忆化不是正解。给出 N 个点,M 条边的有向图,对于每个点 v,求 A(v) 表示从点 v 出发,能到达的编号最大的点。接下来 M 行,每行 2 个整数 Ui,Vi,表示边 (Ui,Vi)。
2025-03-19 20:15:28
394
原创 STL学习笔记之优先队列(priority_queue)
优先队列(priority_queue)底层是用堆来实现的一个数据结构,在优先队列中,队首元素一定是当前队列中优先级最高的那一个。在任何时候往优先队列(priority_queue)里面加入元素(push),优先队列的底层数据结构堆(heap)就会随时调整结构,使得每次队首元素都是优先级最大的。和普通队列不一样的是,优先队列(priority_queue)没有front()和back()函数,而只能通过top()函数来访问队首数据(也可以称为堆顶元素),也就是优先级最高的元素。
2025-03-19 19:32:14
419
原创 图论的学习笔记(1)
注意判环条件是本次路线经过过。我们一般从a开始访问,对a进行DFS时,发现哪里都去不了,再从b开始访问,b可以到a,然后a也哪里都去不了,最后从c开始访问,c到b,b到a。注意,因为无向图的边可以理解为是双向可达的,即 lastx→x→nextx,其中在x进行访问nextx时,如果只对他进行是否可达判定和是否已访问判定,就做出判断说该图是否有环的话,是不准确的,因为按照DFS的顺序进行访问的话,lastx顶点访问完后,赋值b[lastx]=true,此时下一个要访问的顶点就是x,然后访问从x可达的顶点。
2025-03-17 00:24:00
1907
原创 (PTA) L2-4 大众情人
L2-4 大众情人(分数 25)人与人之间总有一点距离感。我们假定两个人之间的亲密程度跟他们之间的距离感成反比,并且距离感是单向的。例如小蓝对小红患了单相思,从小蓝的眼中看去,他和小红之间的距离为 1,只差一层窗户纸;但在小红的眼里,她和小蓝之间的距离为 108000,差了十万八千里…… 另外,我们进一步假定,距离感在认识的人之间是可传递的。
2025-03-14 18:27:12
427
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人