自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 图论--二分图的判定和简单应用

(Bipartite Graph)是指图的顶点集 V 可以分割为两个互不相交的子集 U 和 V(通常记作 X 和 Y,且 U∪V=V),使得图中的每一条边 e 所关联的两个顶点分别属于这两个不同的子集。题目大意:给一个无向图,有n个点,m条边,(不保证一定是一个连通图,但是保证不重边)可以选择若干个点,要使得这若干个点互不相邻,且这些点使得图所有边都至少有一个端点被选到。学完这个该学习二分匹配了!(即长度为奇数的环)的图。等价定义:二分图是不包含。

2026-03-06 23:28:09 254

原创 强连通分量(SCC)--Tarjan算法

dfn[u]:节点 u 被搜索到的次序(时间戳)。low[u]:节点 u 通过搜索树边或已在栈中的反向边,能够到达的最小时间戳。

2026-03-04 22:45:04 348

原创 最小生成树--Kruskal算法,Prim算法

1. Kruskal 算法(克鲁斯卡尔)在图论中,是一个非常经典的问题。本文介绍两种主流,经典算法:分别是Kruskal,Prim。1. Kruskal 算法(克鲁斯卡尔)核心:Kruskal 算法的核心思想是,它按照边权从小到大的顺序选择边。适用于稀疏图。其中判断是否成环用并查集(DSU)维护即可。

2026-02-27 03:24:12 557

原创 最短路算法——Dijkstra,Floyd

本文介绍了两种经典的最短路径算法:Dijkstra算法和Floyd算法。Dijkstra算法采用贪心策略和堆优化,适用于单源非负权图的最短路径问题,时间复杂度为O(ElogV)。Floyd算法通过动态规划思想解决多源最短路径问题,使用三层循环枚举中转点更新距离矩阵,时间复杂度为O(V³)。两种算法分别适用于稀疏图和稠密图:Dijkstra适合边少点多的情况,而Floyd适合点多边少的情况。文章通过洛谷例题展示了两种算法的具体实现,并对比了它们的适用场景和性能特点。

2026-02-26 16:47:00 970

原创 线段树五大核心操作详解

摘要:本文介绍了线段树这一用于高效处理区间操作的数据结构。线段树是一种平衡二叉树,通过节点维护区间信息实现O(logn)复杂度的区间查询和修改。文章详细讲解了线段树的五大核心操作:pushup(向上更新)、pushdown(下放懒标记)、build(建树)、add(区间修改)和query(区间查询),并提供了完整的模板代码。重点阐述了线段树的实现原理,包括4倍数组空间、位运算访问子节点等关键点,以及懒标记(lazy tag)这一优化技巧,帮助读者掌握线段树的基本应用。

2026-02-26 01:19:48 155

原创 逆序对(归并排序,树状数组)

本文介绍了两种高效求解逆序对问题的算法:归并排序法和树状数组法。传统暴力解法时间复杂度为O(n²),而这两种方法可将复杂度优化至O(nlogn)。归并排序法在合并过程中统计逆序对数量,利用分治思想实现;树状数组法则通过离散化和权值计数,将数值映射为树状数组下标进行统计。两种方法各具特色,归并排序实现简洁,树状数组则展示了数据结构的巧妙应用。文章提供了完整的代码实现,适合算法竞赛选手学习参考。

2026-01-27 16:17:30 967

原创 拓扑排序:算法竞赛中的DAG利器

摘要:拓扑排序是处理有向无环图(DAG)的重要算法,通过Kahn算法(BFS)实现线性排序。其核心思想是将顶点排序,使边始终从前指向后。主要作用包括判断有向图是否成环(排序后顶点数不足则存在环)和在DAG上进行动态规划。文中以洛谷B3644为例,详细介绍了基于邻接表建图、入度表记录和队列处理的实现方法,最终输出拓扑排序结果。代码展示了从入度为0的节点开始,通过BFS逐步处理相邻节点并更新入度表的过程。

2026-01-22 16:12:57 283

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除