自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构复习(单调栈,单调队列,KMP,manacher,tire,字符串哈希)

单调栈用于解决"寻找每个元素左侧/右侧第一个比它小/大的元素"类问题。栈中元素保持单调性,时间复杂度O(n)。维护一个严格递增栈。对于每个元素a[i],不断弹出栈顶比a[i]大的元素,剩下的栈顶即为第一个比它小的元素。栈中存储下标方便定位。代码关键点:while(getsize()&&a[top()]>=a[i]) pop():维护栈的递增性push(i):存储下标而非值,方便后续比较单调队列能在O(n)时间内处理滑动窗口极值问题。队列中元素保持单调性,队首即为当前窗口极值。

2025-04-03 17:28:05 669

原创 dfs复习

h(n) 是启发式函数,用于估计从当前节点n到目标节点的代价。不用担心这样会导致过于高的复杂度,其实认真思考下就会发现如果高度为dep,当我们下次搜第dep+1层的时候,叶子结点的数量的数量级和之前1~dep层加起来差不多,所以这样的优化有时候效果是很突出的。先去搜索前面N/2个礼物,获得其对应的重量集合,然后对后面的N/2个进行搜索,根据获得的重量在前面的重量集中使用二分查找获得最优值。同样是迭代加深+A*,这里的每次的操作最多给我们带来1的改变,所以估价函数就是中间的方格中不符合的数目。

2025-03-31 19:02:38 641

原创 bfs搜索复习(floodfill,单一权值最短路,0-1最短路,多源bfs,图自身变化的bfs,双端队列)

对于0-(单一有效权值)1最短路问题,我们将通过0转移的点从队伍头部加入,对于1转移的点通过尾部插入,保证队列的单调性的同时,去进行最短里的求解。不难看出顺着当时的走线走,花费为0,反之如果将线路改变方向,花费为1,所以是一个经典的0-1最短路,使用双端队列的bfs即可。这个问题就是让我们求出每个0到最近的1的曼哈顿距离,最简单的就是把所有的1放入起始队列进行扩张,标记第一次蔓延到的0。需要注意的是,不能走重复了,因为涉及需要记录路径,复用vis标记数组,让1,2,3,4表示从不同的地方转移过来的。

2025-03-31 12:25:04 347

原创 可持久化(线段树(主席树),tire)

可持久化数据结构是一种能够在多次修改操作后仍能访问历史版本数据的数据结构。以下是对它的详细介绍:定义与特点定义:可持久化数据结构通过某种方式记录数据结构在不同时间点的状态,使得在进行一系列插入、删除或修改操作后,仍然可以高效地访问和查询过去某个时刻的数据结构状态。特点:它允许在不复制整个数据结构的情况下,创建多个版本的数据结构,每个版本都反映了在某个特定操作序列之后的数据状态,从而节省了大量的空间和时间开销。常见类型。

2025-03-26 12:35:48 787 2

原创 数据结构与算法-数据结构-线段树1(单点修改,区间查询):最大数,你能回答这些问题吗

线段树是一种二叉树数据结构,它用于高效处理区间查询(如求区间和、区间最大值等)和单点修改、区间修改操作。线段树的每个节点代表一个区间,根节点代表整个待处理的区间,每个内部节点将其代表的区间分成两部分,分别由其左右子节点表示。

2025-03-25 18:48:40 846

原创 数据结构与算法-图论-强连通分量(tarjan算法)

在有向图 G 中,如果对于任意两个顶点 u 和 v,都存在从 u 到 v 以及从 v 到 u 的路径,则称图 G 是强连通图。强连通分量是有向图中的极大强连通子图,即该子图是强连通的,且不存在包含该子图且更大的强连通子图。基本思想:Floyd 算法是一种动态规划算法,用于计算图中任意两点之间的最短路径。对于每一对顶点 i 和 j,考虑是否通过中间顶点 k 能使路径更短,即 dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j])。

2025-03-25 15:25:49 974

原创 数据结构与算法-数据结构-树状数组

这是因为 C[7] 包含了 a[7],C[6] 包含了 a[5] + a[6],C[4] 包含了 a[1] + a[2] + a[3] + a[4],恰好覆盖了 a[1] 到 a[7] 的范围。例如,修改 a[i] 的值,那么需要更新所有包含 a[i] 的区间对应的树状数组节点。例如,i = 6,二进制表示为 110,最低位的 1 对应的值是 2,所以 C[6] 维护的区间长度为 2,即 C[6] 存储的是 a[5] + a[6] 的和(假设 a 是原始数组)。

2025-03-23 22:14:49 695

原创 数据结构与算法-数据结构-并查集(拓展域并查集,状态压缩,按秩合并,点到根的距离)

并查集是一种用于管理 不相交集合 的数据结构,支持以下两种核心操作:查找(Find):确定元素属于哪个集合(常用于判断两个元素是否属于同一集合)。合并(Union):将两个集合合并为一个集合。核心思想:通过树形结构组织集合,每个集合的根节点作为唯一标识。

2025-03-20 20:41:11 833

原创 数据结构与算法-图论-拓扑排序

它将图中的所有顶点排成一个线性序列,使得对于图中的任意一条有向边 (u, v),顶点 u 在序列中都出现在顶点 v 之前。因为拓扑排序的特性保证了在处理过程中,先处理的顶点级别不高于后处理的顶点级别,通过这种方式能得到满足车次运行要求的最少级别划分。可以将任务看作图的顶点,任务之间的依赖关系看作有向边,通过拓扑排序可以确定任务的执行顺序,确保在执行某个任务之前,其所有前置任务都已经完成。否则,图中存在环,不存在拓扑排序。对于该顶点的所有邻接顶点(即由该顶点出发的边指向的顶点),将它们的入度减 1。

2025-03-17 23:14:36 720

原创 数据结构与算法-图论-最近公共祖先(LCA)(祖孙查询,距离,次小生成树)

在一棵有根树中,对于两个节点u和v,它们的最近公共祖先lca是指同时是u和v的祖先,且深度最大的节点。也就是说,lca是u和v在树中 “最深” 的共同祖先节点。例如,在一个家族树中,假设 A 是 B 和 C 的共同祖先,且不存在比 A 更接近 B 和 C 的共同祖先,那么 A 就是 B 和 C 的最近公共祖先。倍增算法(Binary Lifting)是一种非常实用的算法技巧,主要用于解决树上的一些查询问题,例如求最近公共祖先(LCA)、树上路径查询等。

2025-03-16 16:27:15 882

原创 数据结构与算法-图论-欧拉路径和欧拉回路(有向图和无向图,骑马修栅栏,单词游戏 play on words)详细代码注解

/有向图的欧拉路径是入度和出度都相等or2个不等,一个出度大1的是start,另外一个是end。定义:在有向图中,从一个顶点出发,经过每条边恰好一次,并且遍历所有顶点的路径称为有向图的欧拉路径。定义:在有向图中,从一个顶点出发,经过每条边恰好一次,最后回到起始顶点的路径称为有向图的欧拉回路。定义:在无向图中,从一个顶点出发,经过每条边恰好一次,并且遍历所有顶点的路径称为无向图的欧拉路径。定义:在无向图中,从一个顶点出发,经过每条边恰好一次,最后回到起始顶点的路径称为无向图的欧拉回路。

2025-03-15 21:15:13 1102

原创 数据结构与算法-图论-二分图

若一个格子能通过马走 “日” 的规则到达另一个非障碍物格子,并且这两个格子属于不同的集合,那么它们之间存在一条边。输入与初始化。

2025-03-13 17:37:38 2072

原创 蓝桥杯-刷题(铺地毯,多项式输出,玩具谜题,乒乓球,数字统计,明明的随机数)

例如:如果小 A 以 石头-布-石头-剪刀-蜥蜴人-斯波克 长度为 6 的周期出拳,那么他的出拳序列就是 石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-...,而如果小 B 以 剪刀-石头-布-斯波克-蜥蜴人 长度为 5 的周期出拳,那么他出拳的序列就是 剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-...。小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;

2025-03-11 23:42:50 549

原创 蓝桥杯刷题

遍历该节点的所有子节点,若子节点的有效子节点数量大于 0,则将其累加到当前节点的有效子节点数量中。利用这些边的信息构建树的邻接表,以此来表示树的结构,方便后续对树进行遍历操作。对于树中的每个节点,先将其有效子节点数量初始化为该节点的子节点数量减去当前的。通过递归的方式对树中的所有节点进行上述操作,最终得到根节点的有效子节点数量。在遍历过程中,对于每个节点,统计其直接相连的子节点数量,并将结果记录下来。的子节点为根的子树中最长和次长的 “毛毛虫” 分支的节点数。若根节点的有效子节点数量大于 0,说明当前。

2025-03-11 22:36:05 1080

原创 蓝桥杯刷题(Cows in a Skyscraper G,炮兵阵营)

includeusingnamespacestd;constintN110,M(1<<10);//:这是一个万能头文件,包含了几乎所有标准库的头文件,方便编写代码,但在正式竞赛或项目中不建议使用,可能会增加编译时间。//:表示地图的最大行数为 110。//1 << 10即2^10,用于表示一行中最多 10 个位置的所有可能状态。

2025-03-02 15:24:55 781

原创 数据结构预算法-图论- 最小生成树-prim and kruskal

使用普里姆算法:若从顶点 A 开始,首先选择权值最小的边 AD,然后从与 A、D 相连的边中选择权值最小的 CD,接着选择 AB,再选择 BC,最后选择 CE,得到的最小生成树包含边 AD、CD、AB、BC、CE,总权值为 2 + 1 + 3 + 4 + 7 = 17。假设有一个无向连通加权图,顶点为 A、B、C、D、E,边及其权值分别为:AB (3)、AC (5)、AD (2)、BC (4)、BD (6)、CD (1)、CE (7)、DE (8)。它是原图的一个子图,具有以下特点:包含原图中所有的顶点;

2025-03-02 12:03:32 1160

原创 数据结构与算法-图论-最短路-floyd扩展

传递闭包是指在有向图中,对于所有顶点对,如果存在从顶点(i)到顶点(j)的路径(可以经过多个中间顶点),则在传递闭包中存在一条从(i)到(j)的有向边。在FloydWarshall算法的基础上,将距离初始化改为可达性初始化,若有直接边相连则可达性为(1),否则为(0)。在算法过程中,若(dist[i][k]=1)且(dist[k][j]=1),则(dist[i][j]=1),表示从(i)到(j)可达。

2025-02-27 22:03:17 1263

原创 数据结构与算法-图论-最短路-拓展运用

3. 状态更新:在 BFS 遍历过程中,对于当前顶点 $u$ 的每个邻接顶点 $v$ : - 如果 `dist[v]` 为无穷大,说明这是第一次访问到顶点 $v$,则 `dist[v] = dist[u] + 1`,`count[v] = count[u]`。在 BFS 的过程中,维护两个数组: - `dist[i]` 表示从顶点 1 到顶点 $i$ 的最短距离,初始化为无穷大,顶点 1 的距离初始化为 0。这是一道图论中的最短路径计数问题,要求计算从顶点1到图中其他每个顶点的最短路径的数量。

2025-02-26 23:44:24 1284

原创 蓝桥杯刷题(乌龟棋,找爸爸,樱花)

f[i][j][0]:当前位置没有插入空格,那么可以从 f[i - 1][j - 1][0]、f[i - 1][j - 1][1]、f[i - 1][j - 1][2] 转移过来,再加上当前字符匹配的得分 g[x][y]。//空格状态为0的全设置为不可达,f[i][0][1]表示a的长度为i,但是b的长度是0,但是空格状态是a空b不空,不可达,f[0][i][2]同理。对于 f[i][0][2] 和 f[0][i][1],表示一个序列为空,另一个序列有空格,初始化为 -A - (i - 1) * B。

2025-02-26 23:21:01 717

原创 数据结构与算法-图论-最短路和其他的结合

最短路算法常与深度优先搜索(DFS)、动态规划(DP)、二分答案、拓扑排序等算法结合使用:- 最短路与DFS结合:在一些图的路径问题中,当需要访问特定的多个结点,且数据范围较小时,可使用DFS。例如在一个有(n)个结点、(m)条无向边的图中,有(x)个结点必须访问,求最短路径。此时问题可转化为如何排列这(x)个结点,使得从起始结点依次经过其余结点所经过的路径最短。

2025-02-25 23:30:02 1304

原创 蓝桥杯刷题-dp-线性dp(守望者的逃离,摆花,线段)

NOIP 2007 普及组] 守望者的逃离恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。到那时,岛上的所有人都会遇难。守望者的跑步速度为17ms,以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。守望者的魔法值恢复的速度为4。

2025-02-25 22:20:55 1265

原创 mysql-约束

在 MySQL 中,约束(Constraints)是一种用于确保数据库中数据完整性和一致性的规则。通过对表中的列或行设置约束条件,可以限制插入、更新或删除操作的数据范围,从而保证数据的质量和可靠性。

2025-02-24 18:35:40 825

原创 mysql的常用内置函数

RPAD(str, len, padstr):与 LPAD 类似,不过是在字符串 str 的右侧(即末尾)填充指定的字符串 padstr,直到字符串的总长度达到 len。LPAD(str, len, padstr):用于在字符串 str 的左侧(即开头)填充指定的字符串 padstr,直到字符串的总长度达到 len。每次执行时,如果种子 1 不变,都会生成相同的随机数。CEIL (x) 和 FLOOR (x):CEIL 函数返回大于或等于 x 的最小整数,FLOOR 函数返回小于或等于 x 的最大整数。

2025-02-24 17:26:39 840

原创 数据结构与算法-图论-最短路-单源最短路的建图方式

它基于贪心策略,从起始城镇(T_s)(源点)出发,不断选择距离源点最近的未确定顶点,更新其邻接顶点的距离,逐步确定到其他所有顶点的最短距离,最终得到到终点城镇(T_e)的最短路径和最小总费用。2. 转换问题:为了让(B)收到(100)元,设(A)转出的金额为(x)元,那么经过一系列转账路径后,最终到达(B)的金额为(x)扣除所有手续费后的剩余金额,要使其等于(100)元。首先将源点加入队列,然后不断取出队首顶点,对其邻接顶点进行松弛操作,如果某个邻接顶点的距离值被更新,且该顶点不在队列中,则将其加入队列。

2025-02-24 12:28:20 1314

原创 数据结构与算法-搜索-双向搜索 和 A*算法(字串变换,八数码,第k短路)

若新状态不在开放列表中,计算该新状态的(g(n))(在当前状态的(g(n))基础上加1)、(h(n)) 和(f(n)) ,将其加入开放列表,并记录其父状态为当前状态。若新状态已在开放列表中,计算从当前状态到该新状态的新(g(n)) ,若新(g(n)) 小于原来的(g(n)) ,则更新该新状态的(g(n))、(f(n)) 和父状态。2.2.3若相邻节点已在开放列表中,计算从当前节点到该相邻节点的新 g(n),若新 g(n)小于原来的 g(n),则更新该相邻节点的 q(n)、f(n)和父节点。

2025-02-23 23:45:06 630

原创 mysql -DQL语句和DCL语句

数据控制语言(Data Control Language,DCL)是 SQL 语言的一个重要组成部分,主要用于管理数据库中的用户权限和事务处理,确保数据库系统的安全性和数据的完整性。select *from emp where idcard like ‘%X’ //查询身份证以X结尾的人。select * from emp where like ‘__’//_模糊匹配单个字符,%任意多个字符。CREATE USER ‘用户名’ @ ‘主机名’ INDENTIFIED BY ‘密码’

2025-02-23 19:44:26 806

原创 数据结构与算法-搜索-迭代加深,双向dfs,IDA*

A 算法:A 算法是一种启发式搜索算法,它使用一个启发式函数 (h(n)) 来估计从节点 (n) 到目标节点的代价,结合从起始节点到节点 (n) 的实际代价 (g(n)),得到一个评估函数 (f(n)=g(n)+h(n))。IDA 算法将迭代加深搜索和 A 算法的思想结合起来,在每次迭代加深的深度优先搜索中,使用评估函数 (f(n)) 来判断是否继续扩展节点,若 (f(n)) 超过当前的深度限制,则剪枝。若 (f(n)) 未超过深度限制,且节点 (n) 为目标节点,则搜索结束,返回路径。

2025-02-22 15:51:34 772

原创 数据结构与算法-搜索-剪枝

在深度优先搜索(DFS)算法中,剪枝是一种优化策略,用于减少不必要的搜索,从而提高算法的效率。

2025-02-21 17:45:22 1126

原创 数据结构与算法-搜索-dfs(连通性,回溯)

将棋盘上的每个格子看作图中的一个节点,马按照 “日” 字移动规则,从一个格子到另一个格子的移动视为图中节点间的边。DFS 算法的核心思想是从一个起始节点开始,沿着一条路径尽可能深地访问节点,直到无法继续,然后回溯到上一个节点,继续探索其他路径。状态转移:对于当前节点,依次尝试向东南西北四个方向移动,若移动后的坐标在迷宫范围内且对应格子为.(可通行),并且未被访问过,则将其作为新节点进行递归搜索。在搜索过程中,记录遇到的最小分组数,遍历完所有可能的分组情况后,得到的最小分组数就是答案。

2025-02-21 11:24:21 764

原创 数据结构与算法-搜索-bfs(双端队列优化0-1最短路,多源bfs)

双端队列广度优先搜索(Double-Ended Queue BFS,简称双端 BFS)是广度优先搜索(BFS)的一种变体,常用于处理边权只有 0 和 1 的图的最短路径问题。因为这个题目要求我们的转移出来的字典序是最小的,所以要求我们这里的bfs不能只以第一次搜索到的为准,入果步数一致的话,要选择更小的一个字典序排列才行。这种题有很明显的特征就是,他是地图本身发生变化,让我们找到图从初始状态到目标状态的转化次数,而不是图上的点发生变化,求出点变化的路径相关问题。

2025-02-21 10:43:04 990

原创 数据结构与算法-搜索-bfs(floodfill and 最短路):池塘计数,城堡问题,山峰和山谷,迷宫问题,武士分度的牛,抓住那头牛

其核心思想是从图中的某一顶点V_0开始,先访问V_0;然后依次访问与V_1,V_2,......,V_t相邻接的所有未曾访问过的顶点,如此循环,直至所有顶点都被访问过。比如在填充一个封闭图形时,起始点入队后,每次从队列中取出一个像素点,若其颜色符合条件,将其填充为新颜色,再把它四周符合条件的像素点加入队列,直到队列中没有待处理的点。Flood - fill 算法是在一个区域内,从给定的起始点开始,按照一定的规则(比如颜色相同、数值在某个范围内等),将周围符合条件的相邻位置进行填充或标记的过程。

2025-02-19 18:07:01 919

原创 数据结构与算法-动态规划-斜率优化

设 (dp[i]) 表示将前 (i) 个元素进行分段的最小总代价。

2025-02-18 18:51:46 1056

原创 数据结构与算法-动态规划-单调队列优化(最大子序列和,旅行问题,烽火传递,绿色通道,修建草坪)

(对单调队列的自己的见解:单调队列可以用爬山形象的来比喻:我们的视野范围就是窗口的大小,当我们翻过一个山头之后,我们就看不见山头那边的景色了,反应在数组中就是 (1,3,-1,),当我们遍历到-1的时候,假设我们的窗口是3,但是我们只能看见3,看不见3前面的1但是3后面的-1还是看的见的,因为这个-1可能成为新的山头,(1,3,-1,-2,-3))-2:当队列不为空且s[i]<=s[]q.back()时,队尾元素出队,保持队列单调递减(这样队首元素对应的前缀和是当前窗口内最小的,用于计算最大子序列和)。

2025-02-17 20:45:07 1283

原创 数据结构与算法-动态规划-数位dp(计数问题,度的数量,数字游戏,windy数,数字游戏2,不要62,恨7不成妻)

假设当前处理到第 pos 位,若当前位数字为 i,且前面状态为 state,根据问题的规则,可能会转移到新的状态 new_state,那么 dp[pos][new_state] 就需要根据 dp[pos - 1][state] 进行更新。例如,规定一个数字的首位不能为 0,且相邻数位的差值不能超过 2,求满足条件的数字个数。示例说明:当X=15,Y=20,K=2,B=2时,17=2^4+2^0,18=2^4+2^1,20=2^4+2^2 这三个数满足条件,即区间内满足条件的整数个数为3。

2025-02-17 15:46:49 1351

原创 计算机网络-八股-学习摘要2

对方收到后,先是对内容也计算出一个「指纹」,然后跟发送方发送的「指纹」做一个比较,如果「指纹」相同,说明内容没有被篡改,否则就可以判断出内容被篡改了。那么,在计算机里会用摘要算法(哈希函数)来计算出内容的哈希值,也就是内容的「指纹」,这个哈希值是唯一的,且无法通过哈希值推导出内容。服务器收到客户端发送的加密预主密钥后,使用自己的私钥解密,获取预主密钥。如果证书验证失败,通信将终止。服务器证书(Certificate):包含服务器的公钥证书,由受信任的证书颁发机构(CA)签名,用于客户端验证服务器的身份。

2025-02-14 07:30:00 919

原创 数据结构预算法-动态规划-树形dp(没有上司的舞会,树的直径,树的中心,数字变换,二叉苹果树,战略游戏,皇宫看守)

树形 DP 以树作为数据结构,利用树的。

2025-02-13 19:56:05 918

原创 mysql数据库学习 -mysql使用教学和sql语言 ddl语句

数据模型客户端向mysql数据库服务器发送sql语句,经过DBMS操作多个数据库数据库分类:关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库特点:1,使用表存储数据,格式统一,方便管理,维护2,使用sql语言,标准统一,使用方便。

2025-02-13 07:15:00 646

原创 计算机网络-八股-学习摘要

再。

2025-02-12 17:33:42 961

原创 数据结构与算法-动态规划-区间dp(石子合并,环形石子合并,凸多边形的划分,加分二叉树,棋盘分割)

通常用 (dp[i][j]) 表示区间。

2025-02-12 16:09:17 887

原创 数据结构与算法-动态规划-状态压缩(蒙德里安的梦想,Hamilton路径,愤怒的小鸟,骑士,玉米田,炮兵阵地)

根据状态转移关系,结合问题的目标(如求方案数、最大值、最小值等),建立状态转移方程。

2025-02-11 23:36:19 510

空空如也

空空如也

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

TA关注的人

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