- 博客(36)
- 收藏
- 关注
原创 DFS(深度优先搜索)
DFS(Depth-First Search,深度优先搜索)是一种经典的图遍历算法,广泛应用于树结构遍历、图论问题(如连通性分析、拓扑排序)、路径搜索、回溯算法等领域。
2025-06-07 10:27:59
980
原创 拓扑排序(Topological Sorting)
拓扑排序的本质是将非线性依赖关系转化为线性有序序列理论层面:作为图论的基础算法,连接了图的拓扑性质与实际应用需求。工程层面:成为解决依赖调度问题的 “通用工具”,支撑了编译器、任务调度系统、包管理等关键基础设施。方法论层面:体现了 “建模 - 抽象 - 算法求解” 的问题解决范式,为复杂系统的有序化提供了思维框架。从早期的数学理论到如今的多领域渗透,拓扑排序持续展现着其跨学科的生命力,未来仍将在智能化、大规模系统中扮演关键角色。拓扑排序。
2025-06-02 11:21:10
589
原创 Dijkstra 算法
20 世纪 50 年代,计算机科学尚处于萌芽阶段,图论作为离散数学的重要分支,主要用于解决路径规划、网络优化等实际问题。荷兰计算机科学家(1930–2002)在 1956 年遇到了一个具体需求:计算荷兰阿姆斯特丹到鹿特丹的最短交通路线。当时的地图可抽象为 “带权图”(道路为边,距离为权重),而寻找最短路径的问题亟需一种高效算法。Dijkstra 最初尝试用手工计算解决这一问题,通过逐步扩展 “已确定最短路径的节点”,并更新相邻节点的距离。这一过程启发他将问题抽象为。
2025-04-19 09:40:17
1027
原创 ABS函数c++
abs函数只能处理标准的整数和浮点类型,对于自定义类型(如用户定义的复数类、向量类等),无法直接使用abs函数计算其 “绝对值”(如复数的模、向量的模长等)。开发者需要为自定义类型重载abs函数或者实现专门的方法来完成类似的计算。
2025-04-06 20:51:17
1393
原创 动态规划(DP)
状态是动态规划中用来表示子问题的关键。要准确地定义状态,需要考虑问题的哪些方面是可变的,以及如何用这些变量来唯一确定一个子问题。单变量状态:在斐波那契数列问题中,我们用一个变量 i 来表示数列的第 i 项,状态 dp[i] 就表示斐波那契数列的第 i 项的值。多变量状态:在背包问题中,我们需要两个变量 i 和 w 来表示子问题,其中 i 表示前 i 个物品,w 表示背包的容量,状态 dp[i][w] 表示前 i 个物品放入容量为 w 的背包中所能获得的最大价值。
2025-03-30 18:57:21
1083
原创 20250322 c++gesp三级编程题答案
由于枚举范围比较小,所以当前代码效率还可以。要是枚举范围变大,这种方法效率就会降低。可以考虑从位运算的特性出发进行优化,不过本题数据范围较小,当前的枚举法已经足够高效。这是一道关于统计单词出现频率并找出出现次数最多单词的题目,解题的关键在于处理单词的大小写问题以及有效地统计每个单词的出现次数。此代码采用的是枚举法,时间复杂度为 O(n),这里的 n 是枚举的范围(本题是。通过以上步骤,就可以实现对输入单词的频率统计,并找出出现次数最多的单词。为了求解,采用枚举法,把所有可能的正整数。
2025-03-23 20:34:17
1148
原创 哥德巴赫猜想
18 世纪,欧洲数学正处于蓬勃发展的时期。微积分在牛顿和莱布尼茨的创立下,逐渐成为数学研究的重要工具,推动了数学在物理、天文等多个领域的广泛应用。同时,数论作为数学的一个古老分支,也吸引着众多数学家的关注,他们热衷于研究整数的性质、规律以及各种数之间的关系。
2025-03-01 11:57:15
1890
原创 c++快速排序
快速排序(QuickSort)是一种高效的排序算法,由英国计算机科学家在 1959 年提出。它是基于(Divide and Conquer)的经典算法之一,具有平均时间复杂度为的优秀性能。(使用头文件<algorithm>)
2025-03-01 11:27:19
423
原创 KMP算法
KMP(Knuth-Morris-Pratt)算法是一种用于字符串模式匹配的高效算法,旨在解决“在一个主字符串中查找一个子字符串”的问题。它由三位计算机科学家 Donald Knuth、 Vaughan Pratt 和 James H. Morris 于 1977 年首次提出。
2024-12-28 10:03:24
507
原创 P1988 火炬
这个函数用于检查一个数字是否只包含1和0。它通过不断取数字的最后一位并检查是否为1或0,如果不是则返回false,否则继续检查直到数字为0。: 这些头文件和命名空间声明是必要的,用于输入输出、字符串处理和队列操作。
2024-08-17 21:47:53
576
原创 B3946 [语言月赛 202403] 2014
只要字符串中'2'、'0'、'1'和'4'的数量满足上述条件,我们就可以断定可以通过交换操作将字符串变成2014串。首先,我们需要统计字符串中每个字符(从'0'到'9')的出现次数。这可以通过遍历字符串并使用一个大小为10的数组来实现,数组的每个位置对应一个数字,存储该数字在字符串中出现的次数。一个有效的2014串是由若干个"2014"子串拼接而成的。根据上述分析,如果字符串中'2'、'0'、'1'和'4'的数量满足条件,则输出"Yes";
2024-08-15 17:17:35
1766
原创 P10708 [NOISG2024 Prelim] Tourist
这道题的目标是计算在 N 天内游览城市所需的最小火车票花费。我们有两种火车票可以选择:单程票和单日票。单程票每次乘坐花费 x 元,而单日票可以在一天内不限次数乘坐,花费 y 元。通过这种方法,我们可以确保每一天都选择了最经济的购票方式,从而得到整个行程的最小花费。 代码解释: 变量声明:声明了变量 (天数)、(单程票价格)、(单日票价格)、 数组(存储每天的火车乘坐次数)和 (总花费)。主函数: 读取输入的 、 和 。 循环读取每天的火车乘坐次数 。 对于每一天,计算如果购买单程票
2024-08-06 16:21:53
682
原创 P3370 【模板】字符串哈希
这道题目要求我们计算给定的N个字符串中有多少个不同的字符串。为了高效地解决这个问题,我们可以使用哈希表来存储和去重字符串。中是否已经存在该字符串,如果存在则跳过当前循环。
2024-08-06 16:00:06
401
原创 P10839 【MX-J2-T0】Turtle and Equations
【代码】P10839 【MX-J2-T0】Turtle and Equations。
2024-08-05 20:08:30
569
原创 P1968 美元汇率
输入处理:初始化变量:动态规划更新:输出结果:输入处理:初始化变量:动态规划更新:输出结果:方法二:(动态归化) 代码解释:方法一: 输入处理:初始化变量:动态规划更新:输出结果:定义变量: 表示持有美元的最大价值,初始为100.0美元。 表示持有马克的最大价值,初始为0.0马克。 用于临时保存当前美元的价值。 表示天数。 表示当天的汇率。 输入处理: 从标准输入读取一个整数 ,表示戴维学习汇率的天数。 动态规划更新:
2024-07-26 14:44:20
610
原创 P9810 [CCC 2015 S1] Zero That Out
题目要求我们维护一个序列,并根据给定的操作进行添加和删除元素,最后计算序列中所有数的和。我们可以使用栈来实现这个功能,因为栈的特性非常适合处理这种在序列末尾添加和删除元素的操作。栈(Stack)是一种线性数据结构,遵循后进先出(Last In, First Out,LIFO)的原则。栈在计算机科学中有广泛的应用,例如函数调用栈、表达式求值、括号匹配检查等。
2024-07-25 14:30:06
1418
原创 P10446 64位整数乘法
我们可以使用分治法来计算 (a \times b \mod p)。具体来说,我们可以将 (b) 分解成两部分,分别计算 (a \times (b // 2)) 和 (a \times (b - b // 2)),然后将结果相加并取模。这样可以避免直接计算大数的乘积。
2024-07-25 08:09:51
565
1
原创 P10296 [CCC 2024 S2] Heavy-Light Composition
【代码】P10296 [CCC 2024 S2] Heavy-Light Composition。
2024-07-24 16:14:17
600
原创 P10292 [CCC 2024 J3] Bronze Count
2. 创建一个数组 scores 并读取每个参赛者的分数。8. 输出 third_highest 和 count。- 记录当前分数为 third_highest。4. 初始化 unique_count 为 0。3. 对 scores 数组进行降序排序。- 增加 unique_count。6. 初始化 count 为 0。- 增加 count。1. 读取参赛者的数量 N。
2024-07-23 17:41:04
377
原创 P2758 编辑距离
这道题是经典的编辑距离问题(Edit Distance),通常使用动态规划(Dynamic Programming, DP)来解决。编辑距离是指将一个字符串转换成另一个字符串所需的最少操作次数,操作包括插入、删除和替换字符。定义状态:状态转移方程:初始化:结果:
2024-07-21 15:13:36
312
原创 P1091 [NOIP2004 提高组] 合唱队形
要解决这个问题,我们需要找到一个最长的合唱队形,即找到一个最长的子序列,使得这个子序列先严格递增后严格递减。
2024-07-21 13:08:58
370
原创 P1451 求细胞数量
要解决这个问题,我们需要遍历矩阵中的每个元素,并使用广度优先搜索(BFS)来找到所有相连的细胞。每当找到一个新的细胞(即一个数字1到9),我们就从该细胞开始进行BFS,标记所有相连的细胞,并计数。
2024-07-14 14:33:06
166
原创 P1639 [USACO18FEB] Teleportation B
为了求解这个问题,我们需要考虑如何利用传送门来最小化从地点 (a) 到地点 (b) 的运输距离。通过这种方式,我们可以确保找到从 (a) 到 (b) 的最小运输距离。我们需要计算每种路径的距离,并选择最小值。
2024-07-08 18:13:03
384
原创 P1923 【深基9.例4】求第 k 小的数题解
想法:因输入时数据较大,所以要在输入前加ios::sync_with_stdio(0);用法:nth_element(a + x,a + x + y,a + x + len);想法:使用STL中的函数nth_element。想法:对输入的数组进行排序,最后输出。蒟蒻亲测,请放心食用。
2024-07-04 17:42:18
270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人