自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDU1026——Ignatius and the Princess I,HDU1027——Ignatius and the Princess II,HDU1028——Ignatius and the

a矩阵:存储迷宫的信息,其中X表示障碍物,表示空地,数字1-9表示需要战斗的格子。flag矩阵:标记格子是否已被访问过。d数组:定义了四个移动方向。node结构体:包含坐标y和x,以及到达该格子的步数step。pre数组:用于记录每个格子的前一个格子,以便回溯路径。

2024-07-22 10:30:00 884

原创 HDU1023——Train Problem,HDU1024——Max Sum Plus Plus,HDU1025——Constructing Roads In JGShining‘s Kingdom

但是,保留这行代码不会影响最终结果的正确性,只是可能在某些优化版本中会被去除以提高效率。:代码开始读取测试案例的数量,但实际上并没有直接使用一个变量来计数案例,而是通过一个循环和一个外部计数器。它首先检查数组的长度,然后从最高位开始打印每一位,使用。:接下来,代码使用动态规划和二分查找来找到最长递增子序列的长度。,分别代表数组中可能的起始位置的最大值和数组的长度。的值输出相应的结果信息,注意这里根据英语语法,当。来保证输出格式的统一,去除无意义的前导零。:这是程序的入口点,它初始化数组,然后调用。

2024-07-21 14:30:00 565

原创 HDU1020——Encoding,HDU1021——Fibonacci Again,HDU1022——Train Problem I

这个函数实现了斐波那契数列的一个变体。斐波那契数列通常定义为。,之后每一项都是前两项的和。但在这个变体中,起始的两个数分别是。:此函数用于检查是否能够按照给定的出站顺序(根据FN函数推断出n的规律,进行总结归纳。函数会被调用来显示火车调度的具体步骤。:这是程序的入口点,它读取输入并调用。,表示将要处理的字符串数量。:首先,代码读取一个整数。来模拟车站中的火车。

2024-07-21 10:00:00 326

原创 HDU1014——Uniform Generator,HDU1015——Safecracker,HDU1016——Prime Ring Problem

目录HDU1014——Uniform Generator题目描述运行代码代码思路HDU1015——Safecracker题目描述运行代码代码思路优化建议HDU1016——Prime Ring Problem题目描述运行代码代码思路Problem - 1014代码思路 定义函数:函数:Problem - 1015代码思路 函数定义:函数用于检查五个字母是否互不相同。函数用于降序排序字母。主函数逻辑:减少不必要的比较:避免不必要的ASCII转换:由于已经降序排序,可以直接使用字母在数组中

2024-07-20 14:45:00 648

原创 greater<int>()函数的使用情况以及less<int>函数,比较器在 STL 中的应用场景

是 C++标准库中定义的一个函数对象(也称为仿函数)模板。则是创建了一个类型的临时对象。的作用是定义了一种大于关系的比较规则,用于比较两个int类型的对象。具体来说,它通过重载operator()运算符来实现比较功能,当使用对象进行比较时,会返回第一个参数是否大于第二个参数的布尔值。在一些需要比较操作的场景中,如排序算法(sort)或优先队列()等,就可以将作为参数传递,以指定按照降序(从大到小)的方式进行排序或组织元素。

2024-07-20 14:31:01 295

原创 HDU1017——A Mathematical Curiosity,HDU1018——Big Number,HDU1019——Least Common Multiple

定义了圆周率\piπ和自然对数底ee的近似值,这些常量用于斯特林公式的计算。

2024-07-20 09:00:00 660

原创 HDU1011——Starship Troopers(树形DP),HDU1012——u Calculate e,HDU1013——Digital Roots

模9的操作实际上是基于数字根(Digital Root)的概念,即一个数的数字根是将其所有数字相加,重复这个过程直到得到一个单数字的结果,这个结果对于任何数来说都是其各位数字相加之和模9的结果(除了全为9的特殊情况)。树形动态规划(Tree Dynamic Programming,简称树形DP)是一种解决在树形结构上的最优化问题的策略,它结合了图论和动态规划技术。是一个函数,用于根据子节点的状态更新当前节点的状态,这通常涉及到某种最优化操作。的当前值上,以累加泰勒级数的和。是一个邻接表,用于表示树的结构;

2024-07-19 14:00:00 1006

原创 HDU1008——Elevator,HDU1009——FatMouse‘ Trade,HDU1010——Tempter of the Bone

使用曼哈顿距离作为预估剩余步数的方法,如果剩余步数不足以到达终点,或者剩余步数与曼哈顿距离的差值的奇偶性不同(意味着无法刚好在剩余时间内到达),则直接返回,避免不必要的递归。如果相邻格子在迷宫范围内,并且是可以通行的或为终点,则进行递归调用,并将剩余时间减少1。:首先,我们需要计算出每个房间的单位成本效益,即每磅猫粮能换取多少磅JavaBeans。接着,找出起点和终点的位置,并调用。:从单位成本效益最高的房间开始,尝试用完所有M磅的猫粮。:在交易的过程中,累计可以获得的JavaBeans总量。

2024-07-19 11:00:00 1240

原创 HDU1005——Number Sequence,HDU1006——Tick and Tick,HDU1007——Quoit Design

Problem - 1005代码思路 函数 :主函数 :这个结果最后是超时运算代码思路 初始化序列:数组用来存储序列的值。和变量分别用于记录循环节的长度和循环节开始的位置。计算序列:检测循环节:函数通过二分查找算法检测序列中的循环节。一旦找到重复的模式(即连续两项相同),它会记录循环节的开始位置()和长度()。输出结果:这种算法特别适用于计算周期性出现的序列,通过检测循环节可以极大地优化计算过程,尤其是在需要频繁查询大索引位置的场景下。Problem - 1006代码思路

2024-07-18 12:00:00 906

原创 单链表的构建与查找节点

在C或C++中,首先你需要定义一个结构体(

2024-07-18 11:00:00 644

原创 HDU1000,HDU1001,HDU1002,HDU1003,HDU1004

执行加法操作,根据两个数的长度选择较长的一个进行循环。在每次迭代中,将对应的位相加,同时加上来自更高位的进位(如果有的话),并将结果存储在。首先输出测试用例的编号,然后是原始的两个大整数(按照原始顺序输出),接着是等于号和加法的结果。使用循环将字符串中的数字转换为整数,并反向存储在。在不同的测试用例之间,输出一个空行以便区分。的长度减一,这是因为数组是从1开始索引的。等于0的情况,此时循环结束,程序随之结束。:最后,函数返回0,表示程序正常结束。,代表要相加的两个大整数。首先,读取测试用例的数量。

2024-07-17 11:30:00 1513

原创 NC275631 嘤嘤不想求异或喵,NC274492 76与61,NC273546 小红的数组移动

将包含 "761" 子序列在原字符串中出现的总次数。这种方法利用了动态规划的思想,每次只关注当前字符和之前的统计结果,从而高效地解决了问题。所有数字的异或结果。利用了异或操作的性质,即任何数和自身异或结果为0。,表示测试用例的数量。所有数字的异或结果。所有数字的异或结果,这通过调用。的所有数字异或的结果就是。的所有数字异或的结果就是。的所有数字异或的结果就是。的所有数字异或的结果就是。所有数字的异或结果,而。模4等于0时,从0到。模4等于1时,从0到。模4等于2时,从0到。模4等于3时,从0到。

2024-07-17 09:00:00 785

原创 分解质因数——AcWing 197. 阶乘分解

质因数分解是将一个大于1的整数写成一些质数的乘积的过程。每个合数(即非质数的整数)都有唯一的一种质因数分解方式,不计因子的顺序。

2024-07-16 12:45:00 1031

原创 约数个数——AcWing 198. 反素数

约数个数指的是一个正整数的所有正因数的数量。例如,数字6有四个正因数:1, 2, 3, 和 6。因此,6的约数个数为4。

2024-07-16 11:00:00 706

原创 平衡树——AcWing 253. 普通平衡树

平衡树是一种自平衡的二叉搜索树,它在进行插入和删除操作后能够自动调整其结构,以保持树的高度尽可能低,从而保证树的查找、插入和删除操作能够在对数时间内完成。最著名的平衡树有AVL树和红黑树。AVL树:是一种严格的平衡树,任何节点的两个子树的高度最多相差1。因此,AVL树是最严格的平衡树之一,保证了树的平衡性,但这也意味着在进行插入和删除操作时可能需要较多的旋转操作来维持平衡。红黑树。

2024-07-15 15:30:00 671

原创 可持久化数据结构——AcWing 255. 第K小数

可持久化数据结构(Persistent Data Structure)是一种在修改时不会改变原有状态的数据结构。每次对数据结构的更新都会产生一个新的版本,而旧版本仍然可用。这种特性使得可持久化数据结构非常适合处理历史版本控制、回滚操作、多线程环境和函数式编程语言。

2024-07-15 14:00:00 108

原创 线段树——AcWing 245. 你能回答这些问题吗

线段树是一种用于区间查询和更新问题的数据结构。它通过递归地将一个区间分解为若干子区间,每个节点代表一个子区间的和、最小值、最大值等信息,从而能够在O(log n)时间内完成单点更新和区间查询的操作。线段树的节点数目最多为4n,其中n是原始数组的长度。

2024-07-14 14:30:00 1584

原创 并查集——AcWing 239. 奇偶游戏

并查集(Disjoint Set Union,简称DSU),是一种树形的数据结构,常用于处理一些不交集的合并及查询问题。在并查集中,元素被分成多个不相交的集合,每个集合由一个代表元素表示,通过一系列的合并(Union)和查找(Find)操作来维护这些集合的状态。

2024-07-14 10:00:00 1015

原创 拓扑排序——AcWing 164. 可达性统计

拓扑排序(Topological Sort)是对有向无环图(Directed Acyclic Graph,简称DAG)的一种排序方式。在一个有向无环图中,拓扑排序的结果是一个线性的顶点序列,其中对于图中的每一条有向边 (u, v),顶点 u 在序列中都会出现在顶点 v 的前面。如果一个图有多个拓扑排序,那么它不是一个唯一的排序,但所有合法的拓扑排序都符合上述规则。

2024-07-13 20:44:47 737

原创 二分图——AcWing 257. 关押罪犯

二分图(Bipartite Graph)是一种特殊的图,在这种图中,顶点可以被分成两个互不相交的集合(设为集合X和Y),并且图中的每一条边都连接一个X集合中的顶点和Y集合中的顶点,没有边连接X集合内的两个顶点,也没有边连接Y集合内的两个顶点。每条边e ∈ E都是在V1和V2之间,即对于任意边(u,v) ∈ E,都有u ∈ V1且v ∈ V2或者u ∈ V2且v ∈ V1。

2024-07-13 20:31:53 919

原创 无向图的双连通分量——AcWing 395. 冗余路径

在无向图中,一个双连通分量(Biconnected Component, BCC)是指这样的子图:删除其中任意一个顶点都不会使这个子图分离成两个或更多个不相连的子图。换句话说,双连通分量是无割点的极大连通子图。

2024-07-12 21:33:33 977

原创 有向图的强连通分量——AcWing 367. 学校网络

强连通分量(Strongly Connected Components, SCC)是图论中的一个概念,在一个有向图中,如果存在一个子图,使得该子图中的任意两个顶点都相互可达(即从任何一个顶点出发都可以到达该子图中的其他任何顶点),那么这个子图就称为一个强连通分量。注意,这里的“子图”指的是原图的一个极大子集,也就是说,它不能被扩展成更大的满足上述条件的集合。

2024-07-12 21:04:43 655

原创 最近公共祖先——AcWing 356. 次小生成树

最近公共祖先(Lowest Common Ancestor, LCA)是在一棵有根树中,对于两个节点 u和 v,LCA 是所有公共祖先中深度最大的一个节点。换句话说,LCA 是 u 和 v的共同祖先中距离根节点最远的一个。

2024-07-11 23:30:11 858

原创 差分约束——AcWing 362. 区间

差分约束系统是一种在计算机科学和运筹学中用于解决特定类型优化问题的工具。它主要用于处理一类线性不等式组,这些不等式描述了变量之间的相对大小关系,而不是直接的绝对值大小。差分约束系统通常用于路径寻找、调度、资源分配等问题。

2024-07-11 23:19:13 943

原创 负环——AcWing 361. 观光奶牛

负环指的是在一个带权图中,由若干边组成的环的边权和为负数。这意味着,如果在图中存在这样的环,那么理论上可以沿着这个环无限行走,每走一圈路径的总权重都会减少。

2024-07-10 21:51:25 606

原创 Floyd算法——AcWing 343. 排序

Floyd算法,全称Floyd-Warshall算法,是一种用于解决图中所有顶点对之间的最短路径问题的动态规划算法。它适用于带权有向图,且可以处理负权重边(但不能处理含有负权重循环的图),并能够检测出图中是否存在负权重循环。

2024-07-10 21:13:38 870

原创 双向DFS——AcWing 171. 送礼物

双向深度优先搜索(Bi-directional Depth First Search, BD-DFS)是一种在图或树中寻找两点间路径的算法。与传统的单向DFS不同,BD-DFS同时从起始节点和目标节点出发进行搜索,使用两个DFS过程。一个向前探索从起点到中间状态的路径,另一个向后探索从终点到相同中间状态的路径。当两个搜索的前沿相遇时,即可找到一条从起点到终点的路径。

2024-07-07 10:30:00 1120

原创 IDA*——AcWing 180. 排书

IDA*(Iterative Deepening A*)是一种结合了深度优先搜索(DFS)的递归深度限制特性和A搜索的启发式估价函数的搜索算法。它主要用于解决启发式搜索问题,尤其是当搜索空间很大或者搜索成本不确定时。IDA* 是一种最佳优先搜索算法,其基本思想是在深度优先搜索的基础上,通过逐步增加搜索深度并结合A*算法中的估价函数f(n)=g(n)+h(n),来找到从初始节点到目标节点的最短路径。其中,g(n)是从初始节点到当前节点的实际代价,h(n)是从当前节点到目标节点的启发式估计代价。

2024-07-07 10:00:00 687

原创 迭代加深——AcWing 170. 加成序列

迭代加深搜索(Iterative Deepening Depth-First Search, IDS)是一种结合了深度优先搜索(DFS)和广度优先搜索(BFS)特点的算法。它通过限制搜索树的深度来控制搜索范围,起初以较小的深度限制进行搜索,如果没有找到解,则逐渐增加深度限制,重复搜索过程,直到找到解为止。这种方法既保留了DFS的空间效率(因为它不需要像BFS那样一次性生成所有深度级别的节点),又具有BFS的“全面性”(最终能找到解,如果存在的话),同时还能有效避免陷入深度过大的搜索分支。

2024-07-06 14:30:00 981

原创 DFS之剪枝与优化——AcWing 165. 小猫爬山

DFS之剪枝与优化指的是在执行深度优先搜索(DFS, Depth-First Search)时,采取的一系列策略来减少搜索空间,避免无效计算,从而加速找到问题的解。剪枝是指在搜索过程中,当遇到某些条件不符合解的要求或者可以预判后续搜索不会产生有效解时,直接放弃这条搜索路径,这一过程称为剪枝。优化则是指通过调整搜索策略、顺序等,提高搜索效率。

2024-07-06 09:30:00 596

原创 DFS之搜索顺序——AcWing 1116. 马走日

DFS之搜索顺序是指在执行深度优先搜索时,遍历图或树中节点的策略。具体而言,DFS会沿着一条路径深入到底,当无法继续深入时回溯,然后选择另一条未探索的路径继续深入。搜索顺序直接影响到搜索效率和剪枝的可能性,合理的顺序可以减少搜索空间,加速找到解的过程。

2024-07-05 11:00:00 1138

原创 DFS之连通性模型——AcWing 1112. 迷宫

DFS(深度优先搜索,Depth-First Search)之连通性模型主要用于图论问题中判断图的连通性,即确定图中的所有节点是否可以通过边相互到达。DFS(深度优先搜索,Depth-First Search)之连通性模型主要用于图论问题中判断图的连通性,即确定图中的所有节点是否可以通过边相互到达。

2024-07-05 09:00:00 712

原创 A*——AcWing 179. 八数码

A* 算法是一种在图形或地图中寻找最短路径的启发式搜索算法。它通过综合考虑起始节点到当前节点的实际代价和当前节点到目标节点的预估代价,来决定下一步的搜索方向。

2024-07-04 15:00:00 859

原创 A*——AcWing 178. 第K短路

A算法是一种广泛应用于路径搜索和图遍历的启发式搜索算法,它结合了最好优先搜索和Dijkstra算法的优点,旨在找到从初始节点到目标节点的最短路径。A算法在游戏AI、机器人导航、地图路线规划等领域有广泛应用。A*算法的核心在于使用一个评估函数f(n)从起始节点到当前节点的实际代价g(n)。从当前节点到目标节点的预估代价h(n),这是通过启发式函数得到的,用于估计未来成本。因此,对于每个节点n。

2024-07-04 09:30:00 1459

原创 双向广搜——AcWing 190. 字串变换

双向广度优先搜索(Bi-directional Breadth-First Search, Bi-BFS)是一种在图或树中寻找两点间最短路径的算法。与传统的单向广度优先搜索相比,它从起始点和目标点同时开始搜索,从而有可能显著减少搜索空间,提高搜索效率,特别是在处理大规模图或者寻找最短路径时更为明显。

2024-07-03 10:00:00 720

原创 多源BFS——AcWing 173. 矩阵距离

多源BFS(多源广度优先搜索)是一种图遍历算法,它是标准BFS(广度优先搜索)的扩展,主要用于解决具有多个起始节点的最短路径问题。在多源BFS中,不是从单一源点开始搜索整个图,而是同时从多个源点出发,寻找这些源点到图中所有其他节点的最短路径。这种方法特别适用于边权都为1的情况,如在网格图中计算点到点的最短曼哈顿距离或欧几里得距离。多源BFS通过初始化一个队列,将所有源节点放入队列中开始。算法执行标准的BFS过程,但每次从队列中取出一个节点进行扩展时,会检查这个节点是否已经被访问过,以避免重复处理。

2024-07-03 09:30:00 989

原创 最小步数模型——AcWing 1107. 魔板

最小步数模型通常是指在某种约束条件下,寻找从初始状态到目标状态所需的最少操作或移动次数的问题。这类问题广泛存在于算法、图论、动态规划、组合优化等领域。具体来说,它涉及确定一个序列或路径,使得按照特定规则执行一系列步骤后,能够从起始位置或状态转换到目标位置或状态,且所花费的步骤尽可能少。

2024-07-02 14:00:00 1756

原创 双端队列广搜——AcWing 175. 电路维修

双端队列广搜(Breadth-First Search with a Deque)是一种图或树的遍历算法变体,它利用了双端队列(Deque,全称Double Ended Queue,允许在其两端进行插入和删除操作)作为数据结构来存储待探索的节点。与传统使用队列的BFS相比,双端队列BFS能够在某些特定问题中更高效地找到最短路径,尤其是当存在多条路径长度相等且需要找到特定类型的目标节点时。

2024-07-02 11:00:00 559

原创 双向广搜——AcWing 190. 字串变换

双向广搜是图搜索算法的一种变体,与传统的单向广搜不同,它同时从起点和终点(或目标状态)开始进行搜索,直到两个搜索的前沿相遇为止。这种方法可以在某些情况下显著减少搜索空间,尤其是在寻找两点间的最短路径时特别有效,因为搜索不是从一端到另一端,而是从两端向中间靠拢。

2024-07-01 14:30:00 960

原创 最短路模型——AcWing 188. 武士风度的牛

最短路模型是图论中的一个经典问题,旨在寻找从图中一个顶点到另一个顶点的路径,使得这条路径上的边(或边的权重)之和最小。这一模型在许多实际问题中有着广泛的应用,比如网络路由、地图导航、物流配送等场景。在图论中,最短路问题通常形式化为在一个加权图 G=(V,E)G=(V,E) 中寻找两个顶点 uu 和 vv 之间的最短路径,其中 VV 是顶点集,EE 是边集,每条边 e \in Ee∈E 都有一个非负权重 w(e)w(e)。目标是找到一条从 uu 到 vv 的路径,使得路径上所有边的权重之和最小。

2024-07-01 11:30:00 645

空空如也

空空如也

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

TA关注的人

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