自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最短路板子及其应用

​ 我们注意到,每次找到不在集合中的点的时间复杂度最高。故我们才用小根堆,其可以有效解决这个问题。

2024-06-01 18:39:08 321

原创 拓扑排序板子及其应用

int n, m;#define N100010n和m分别表示图中的节点数和边数。N是预定义的常量,表示节点的最大数量。e 和 ne 是数组,用于存储图的边信息。e[i] 表示边的目标节点,ne[i] 存储与当前节点相连的下一条边的索引。h数组用于存储每个节点的边的开始部分,即每个节点的邻接表的头部。idx 是用于填充 e和 ne 数组的当前索引。d数组用于存储每个节点的入度。queue 用于实现拓扑排序的队列,head 和 tail 分别是队列的头部和尾部索引。

2024-05-12 19:09:01 342

原创 FloodFill算法及其应用

给定一个地形图,浅色表示洼地,深色表示高地。向这个图中的一个格子注水,随后询问这个格子的四个方向上的格子,显然,只有浅色的格子才可以被洪水覆盖,高低不会被覆盖。这个算法可以在线性复杂度内找到某个点所在的连通块。

2024-05-11 22:12:58 1556 1

原创 并查集的作用、原理、实现及应用

每个集合用一棵树来表示,树根的编号就是整个集合的编号。每个节点存储它的父节点,p[x]表示x的父节点。如何求x的集合编号:while (p[x]!= x) x = p[x] 优化:路径压缩。如何合并两个集合:px是x的集合编号,py是y的集合编号。p[px] = py。如何判断树根:if (p[x] == x) 除了根节点之外p[x]都不等于x。

2024-05-05 19:05:31 191

原创 二分(整数二分,浮点数二分)

当我们将区间[l, r]划分成[l, mid - 1]和[mid, r]时,其更新操作是r = mid - 1或者l = mid;,此时为了防止死循环,计算mid时需要加1。当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;,计算mid时不需要加1。

2024-05-05 17:13:24 294

原创 容斥原理及其应用

如果被计数的事物有A、B两类,则A类和B类元素的总和=A类元素个数+B类元素个数—既是A类又是B类的元素个数。即$$$$如果被计数的事物有A、B、C三类,那么,A类和B类和C类元素个数总和= A类元素个数+ B类元素个数+C类元素个数—既是A类又是B类的元素个数—既是A类又是C类的元素个数—既是B类又是C类的元素个数+既是A类又是B类而且是C类的元素个数。​ 即∣A∪B∪C∣∣A∣∣B∣∣C∣−∣A∩B∣−∣A∩C∣−∣。

2024-04-28 19:05:40 614

原创 数组模拟链表,链式前向星及其应用

define N100010//根据上图可以更好理解//head表示头节点的下标 e[i]表示节点i的值是多少 ne[i]表示节点下一个节点的下标//idx表示当前可以用的点的下标#define N100010邻接表有n个链表(n为图的节点数量)。其余初始化与链表的初始化类似。h[]存储每个顶点链表的头部索引。e[]存储边的目标顶点。ne[]存储同一链表中下一个元素的索引。idx是当前可用的数组索引。

2024-04-26 22:09:36 1717 4

原创 92. 递归实现指数型枚举 - AcWing题库

从 1∼n这 n 个整数中随机选取任意多个,输出所有可能的选择方案。

2024-04-21 18:55:16 623 1

原创 二叉树的前序遍历,中序遍历,后序遍历和层序遍历

【前序遍历】如果二叉树为空,则直接返回。否则,先访问根结点,再递归前序遍历左子树,再递归前序遍历右子树。【中序遍历】如果二叉树为空,则直接返回。否则,先递归中序遍历左子树,再访问根结点,再递归中序遍历右子树。层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据。(即逐层地,从左到右访问所有节点)。给定一个二叉树的根节点。给你一棵二叉树的根节点。

2024-04-19 19:56:23 697

原创 [NOIP2008 提高组] 笨小猴

但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。共两行,第一行是一个字符串,假设输入的的单词是 Lucky Word,那么输出。是单词中出现次数最少的字母的出现次数,如果。是单词中出现次数最多的字母的出现次数,次,出现次数最少的字母出现了。次,出现次数最少的字母出现了。noip2008 提高第一题。【输入输出样例 1 解释】【输入输出样例 2 解释】(本处原题面错误已经修正)

2024-04-12 13:56:30 600 1

原创 洛谷 T3 句子反转题解

要求将这些单词倒序输出。而且对于每个单词,如果是小写词,应当转为大写;如果是大写词,应当转为小写;如果是自然数,应该倒转输出。给定一行句子,每个词之间用空格隔开,要么是全小写英文单词,要么是全大写英文单词,要么是自然数。的数据,句子中包含的单词数量不超过。仅一行,表示程序对句子的处理结果。仅一行,即需要反转的句子。,每个单词长度不超过。

2024-04-08 13:02:46 368

原创 顺序表实现栈

对于顺序表,在 C语言 中表现为数组,在进行栈的定义之前,我们需要考虑以下几个点:1)栈数据的存储方式,以及栈数据的数据类型;2)栈的大小;3)栈顶指针;我们可以定义一个栈的结构体,C语言实现如下所示:int// (1)100005// (2)// (4)int top;// (5)(1) 用DataType这个宏定义来统一代表栈中数据的类型,这里将它定义为整型,根据需要可以定义成其它类型,例如浮点型、字符型、结构体 等等;(2)maxn代表我们定义的栈的最大元素个数;

2024-04-07 18:50:50 1532

原创 快速排序和堆排序

快速排序采用的是分治思想,即在一个无序的序列中选取一个任意的基准元素pivot,利用pivot将待排序的序列分成两部分,前面部分元素均小于或等于基准元素,后面部分均大于或等于基准元素,然后采用递归的方法分别对前后两部分重复上述操作,直到将无序序列排列成有序序列。

2024-04-07 18:49:56 278

原创 归并排序的实现

【代码】归并排序的实现。

2024-04-06 20:08:53 98 1

原创 堆排序的实现

调整堆(AdjustHeap)。调整堆的目的是确保以某个节点为根的子树满足堆的性质(最大堆或最小堆)。这里我们假设要实现的是最大堆。在堆(无论是最大堆还是最小堆)的数据结构中,左子节点和右子节点与它们的父节点之间存在特定的关系。这些关系确保了堆的性质得以维持。对于任何给定的父节点,其左子节点的索引通常可以通过公式计算得出,而右子节点的索引则通过公式计算得出。这里,是父节点在数组中的索引。

2024-04-06 17:09:04 346 1

原创 插入排序的实现

【代码】插入排序的实现。

2024-04-06 15:55:08 65 1

原创 选择排序的实现

【代码】选择排序的实现。

2024-04-06 15:29:04 89

原创 洛谷P1011车站问题题解

火车从始发站(称为第1站)开出,在始发站上车的人数为 a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。于是通过倒数第二站总人数为m列出方程:g(n-2)a+g(n-1)b-b+a=m即b=(m-g(n-2)a-a)/(g(n-1)-1) (n>=3)

2024-04-06 15:06:20 570

空空如也

空空如也

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

TA关注的人

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