- 博客(55)
- 收藏
- 关注
原创 C++差分全解
差分算法是一种高效处理区间更新的技术,通过构建差分数组将区间操作转换为单点操作,将时间复杂度从O(n)降为O(1)。文章详细介绍了差分的基本原理,包括一维和二维差分的构建、区间更新和数组还原方法,并提供了典型应用场景如航班预订统计、会议室安排等问题的解决方案。差分算法特别适合处理大规模数据的批量更新操作,通过离散化等技巧还能进一步优化性能。掌握差分技术需要理解其数学本质,并通过实践熟悉各种变形应用。
2026-05-11 20:23:19
1455
原创 AC鸭的暗号匹配
AC鸭收到了一串很长的暗号 s,AK鸭告诉他真正有用的暗号片段是字符串 t。现在 AC鸭想知道,字符串 t 在字符串 s中一共出现了多少次。注意:出现位置可以重叠。例如aaaaa中,aaa出现了 3 次。
2026-05-11 20:17:33
295
原创 AC鸭的迷宫按钮
AC鸭来到一个迷宫里,迷宫有 n 行 m 列。ABKAC鸭每一步可以向上、下、左、右四个方向移动一格,不能走出迷宫。如果 AC鸭还没有到达过按钮K,那么他不能走到墙上。一旦 AC鸭到达任意一个按钮K,之后所有墙都会打开,AC鸭就可以把墙当成普通空地经过。请你求出 AC鸭从A走到B至少需要多少步。如果无法到达,输出-1。
2026-05-11 19:17:09
383
原创 AC鸭的训练分组
AC鸭准备参加一次训练营,一共有 n 个训练项目,第 i 个项目需要花费 ai 分钟。训练老师要求 AC鸭按顺序完成所有项目,并且可以把这些项目分成不超过 m 组。每一组必须是连续的一段项目,同一组项目在同一天完成。AC鸭不想让某一天太累,所以他希望所有天数中,花费时间最多的那一天尽量少。请你求出这个最小可能值。
2026-05-11 19:11:11
223
原创 AC鸭的温度墙
AC鸭在实验室里看到了一面很长的温度墙,这面墙从左到右一共有 nn 个位置。一开始,每个位置的温度都是 0。接下来 AC鸭会进行 m 次加热操作。每次操作给出 l,r,v表示把第l个位置到第r个位置的温度都加上上v。所有操作结束后,AC鸭想知道有多少个位置的温度不小于 k。
2026-05-11 18:40:51
259
原创 各编程语言什么能学什么不能学?
编程语言的选择需综合考虑学习目标、项目需求和职业发展。Python适合初学者和数据分析,JavaScript是Web开发核心,Java在企业级应用中占优,C/C++适用于系统编程,Go和Rust分别擅长并发和内存安全。应避免过时语言,根据职业方向选择技术栈,如前端选JS+框架,数据科学用Python+R。学习应注重官方文档、开源项目和实战经验,平衡深度与广度,避免技术锁定。编程语言是工具,解决问题的能力才是核心。
2026-05-09 20:03:51
159
原创 关于目前C++学士现状分析
企业对C++开发者的要求逐渐提高,不仅需要扎实的语言基础(如内存管理、多线程、模板元编程),还需掌握现代C++标准(C++11/14/17/20)。部分岗位要求熟悉跨平台开发(如Linux/Windows)、性能优化及底层系统编程(如操作系统、网络协议)。学生需通过自学或项目实践补充知识,如参与开源项目、竞赛(如ACM)、实习等。C++作为一门高性能编程语言,在系统开发、游戏引擎、高频交易、嵌入式系统等领域占据重要地位。近年来,随着人工智能、自动驾驶、云计算等技术的发展,C++的需求呈现波动但稳定的趋势。
2026-05-09 20:01:50
167
原创 GESP考级1—8注意事项
本文系统介绍了CCF/GESP编程能力等级认证考试1-8级的备考要点。1-3级侧重基础编程概念、条件循环和简单数据结构;4-6级涵盖指针、动态内存、树图算法等进阶内容;7-8级涉及操作系统、编译原理、机器学习等高级主题。备考建议系统学习知识点、多做真题、参加实践项目,考试时注意先易后难、规范编码、检查错误。推荐结合官方教材、在线编程平台(如LeetCode)和专业技术博客(如CSDN相关专栏)进行复习。全文提供了从初级到高级的完整知识框架和实用备考策略。
2026-05-09 19:50:57
467
原创 CSP注意事项
排序算法如冒泡排序、选择排序、插入排序、快速排序和归并排序需掌握原理和实现。数组、字符串、链表、栈和队列是基础数据结构,需掌握其特性和操作。树结构包括二叉树和二叉搜索树,需了解遍历方法和基本应用。字符串算法如KMP、Manacher和后缀数组需理解原理和实现。图结构需掌握邻接矩阵和邻接表表示方法,熟悉遍历算法如DFS和BFS。并查集、堆和线段树是高频考点,需理解原理和实现。递归和回溯算法需掌握基本框架和应用场景。通过系统学习和持续练习,考生可以全面提升编程和算法能力,顺利通过CCF/CSP考试。
2026-05-09 19:46:43
533
原创 C++进制全解
C++支持多种进制系统,包括二进制(0b前缀)、八进制(0前缀)、十进制(无前缀)和十六进制(0x前缀)。文章详细介绍了各种进制的表示方法、相互转换技巧以及实际应用场景。在C++中,可以使用标准库函数(std::oct/std::hex等)或手动算法实现进制转换,位运算则直接操作二进制数据。进制操作广泛应用于位掩码、内存管理、硬件编程等领域,合理选择进制表示能提升代码效率和可读性。掌握进制系统是C++程序员的基本功,对底层编程和性能优化尤为重要。
2026-05-09 19:42:27
467
原创 C++双指针全解
双指针技术通常用于数组或链表等线性结构中,通过两个指针协同遍历来优化时间复杂度。将nums2合并到nums1中,假设nums1有足够空间。给定数组nums和值val,原地移除所有val实例。给定排序数组,原地移除重复元素并返回新长度。在有序数组中找出两个数使它们的和等于目标值。在字符串S中找到包含T所有字符的最短子串。找到链表的中间节点(偶数时返回第二个)。计算两个数组的交集(出现次数一致)。给定两个区间列表,返回它们的交集。给定有环链表,返回环的起始节点。找出数组中所有和为0的三元组。
2026-05-08 07:09:12
286
原创 C++质数筛法全解
埃拉托斯特尼筛法实现简单,适合小范围质数生成。内存占用较高,不适用于极大范围。欧拉筛法线性时间复杂度,适合需要高效生成质数的场景。需额外存储质数列表,但总体空间可控。分段筛法适用于极大范围(如需预处理小质数基,实现稍复杂。根据具体需求选择算法:小范围用埃氏筛,线性时间需求用欧拉筛,大范围用分段筛。
2026-05-08 07:09:03
561
原创 C++队列,栈,树的知识全解
队列是一种先进先出(FIFO)的数据结构,支持在队尾插入(enqueue)和队头删除(dequeue)操作。常用实现方式STLqueue:基于其他容器(如deque或list)封装,提供以下操作:q.push(1);// 入队q.pop();// 出队(不返回元素)// 访问队头// 判断空循环队列:固定大小的数组实现,通过模运算避免数据搬移。应用场景广度优先搜索(BFS)任务调度(如打印机队列)栈是一种后进先出(LIFO)的数据结构,支持在栈顶插入(push)和删除(pop)操作。
2026-05-07 13:09:45
345
原创 C++贪心全解
贪心算法的核心是每一步选择当前最优解,最终希望得到全局最优解。关键在于证明贪心策略的正确性。以上题目涵盖了贪心算法的典型应用场景,包括分配问题、区间问题和动态规划中的贪心选择。
2026-05-07 13:04:57
383
原创 C++DP动态规划全解
动态规划通过将问题分解为子问题,存储子问题的解以避免重复计算,常用于优化递归问题。区间DP用于解决涉及区间操作的问题,如合并石子、括号匹配等。背包问题分为 0-1 背包、完全背包和多重背包,核心在于状态定义和物品选取策略。堆石子排成一列,每次合并相邻两堆,代价为两者石子数之和,求最小总代价。用于处理状态维度较高的场景(如网格、排列),通常用二进制表示状态。树形DP通过后序遍历处理子树状态,常用于树上路径或节点选择问题。用于统计满足特定条件的数字数量,如不含某些数字或满足数位和条件。为起点的单侧最大路径和。
2026-05-07 12:59:33
210
原创 C++图论全解
C++图论涵盖广泛,从基础表示到高级算法,应用于多个领域。掌握图论算法需要理解数据结构、算法设计和优化技巧。通过实践和理论学习,可以深入理解图论并解决实际问题。
2026-05-07 12:54:16
580
原创 C++BFS广度优先搜索全解
BFS是一种用于遍历或搜索树或图的算法,从起始节点开始,逐层访问相邻节点,确保先访问所有相邻节点后再深入下一层。:BFS天然适合求解无权图的最短路径,首次访问到目标节点时的路径即为最短。:取出队首节点,访问其所有未访问的邻接节点,加入队列并标记。:若目标节点已知,可从起点和终点同时BFS,减少搜索范围。:在二叉树中,BFS等价于层序遍历,可记录每层节点。:队列为空时结束,表示所有可达节点已访问。:对于稀疏图,邻接表比邻接矩阵更节省空间。:将起始节点加入队列并标记为已访问。
2026-05-07 12:47:30
276
原创 C++DFS深度优先搜索全解
DFS通过递归或栈实现深度遍历,适用于路径搜索、组合问题、图遍历等场景。结合剪枝和回溯可大幅提升效率,其思想在技术和社会领域均有深远影响。
2026-05-06 21:28:33
330
原创 C++排序算法(高级)
C++中常用的排序算法包括快速排序、归并排序、堆排序、冒泡排序、选择排序和插入排序。标准库提供了std::sort函数,通常基于快速排序实现。
2026-05-06 08:05:18
188
原创 C++排序算法(低级)
低级排序算法通常指时间复杂度较高但实现简单的排序方法,适用于小规模数据或教学演示。常见算法包括冒泡排序、选择排序和插入排序。
2026-05-06 08:05:09
247
原创 C++前缀和算法全解
前缀和算法(Prefix Sum)是一种用于快速计算数组区间和的预处理技术。通过预先计算并存储数组的前缀和,可以在常数时间内查询任意区间的和,适用于频繁查询的场景。
2026-05-05 20:32:10
597
原创 C++if判断的使用全解
if (condition1) { // condition1 为真时执行的代码 } else if (condition2) { // condition2 为真时执行的代码 } else { // 所有条件都为假时执行的代码 }if (condition1) { if (condition2) { // condition1 和 condition2 都为真时执行的代码 } }if (condition) { // 条件为真时执行的代码 } else { // 条件为假时执行的代码 }
2026-05-05 20:17:36
75
原创 C++for循环全解
循环是一种控制流语句,用于重复执行代码块,直到满足特定条件。跳出当前循环,跳出后进行下一次循环。省略条件表达式(需在循环体内使用。
2026-05-05 20:14:13
79
原创 C++输入输出全解
通过以上方法,可以覆盖 C++ 中大多数输入输出场景。根据需求选择合适的工具库和技巧。库控制输出格式,如宽度、精度、对齐等。确保输入数据的有效性,避免程序崩溃。适用于非文本数据(如图片、结构体)。库实现字符串与变量的灵活转换。C++ 的输入输出主要基于。对象实现标准输入输出。
2026-05-05 20:13:44
57
原创 C++函数的使用以及主函数
C++函数是程序的基本构建模块,用于封装可重用代码。文章介绍了函数的定义语法(包括返回类型、函数名、参数列表和函数体)、调用方式以及main()函数作为程序入口的特殊性。重点讲解了三种参数传递方式(值传递、引用传递和指针传递)、函数重载规则、内联函数优化和默认参数设置。此外还说明了递归函数的实现原理,即函数通过自我调用来解决问题。这些概念构成了C++函数编程的核心基础,帮助开发者实现代码的模块化和复用。
2026-05-04 13:58:27
308
原创 C++ 操作符优先级
C++运算符优先级表按执行顺序列出16个优先级等级:1)括号、成员访问等最高级运算符;2)单目运算符;3)成员指针运算符;4)乘除取模;5)加减;6)位移;7)关系比较;8)相等判断;9)位与;10)位异或;11)位或;12)逻辑与;13)逻辑或;14)条件运算符;15)赋值运算符;16)逗号运算符最低级。优先级数字越小,运算顺序越优先。
2026-05-02 08:38:48
29
原创 ASCLL码表
ASCII码表摘要:该表列出了0-127十进制范围内的字符编码,包含十进制、八进制、十六进制三种表示形式及字符描述。前32个为控制字符(如NUL、BEL等),32-126为可显示字符(包括字母、数字、标点等),127为删除字符DEL。表格按十进制排序,完整展示了ASCII标准中每个编码对应的字符形式和功能说明,是计算机字符编码的基础参考。
2026-05-01 07:08:08
510
原创 二分知识点
二分查找是一种在有序数组中查找特定元素的高效算法。通过每次将搜索范围减半,时间复杂度可降至O(log n),远优于线性查找的O(n)。时间复杂度推导: [ T(n) = T(n/2) + O(1) ] 通过主定理可得: [ T(n) = O(\log n) ]现代CPU的缓存机制使二分查找的实际性能可能优于理论预期。标准二分查找的实现需要维护三个指针:左边界。二分查找的边界条件容易出错。处的值与目标值的比较结果调整搜索范围。
2026-04-30 12:46:29
48
原创 C++ sort(快排)第三格(条件判断)全解
快速排序的核心在于分区(partition)操作,而条件判断是分区逻辑的关键部分。以下详细解析快速排序中条件判断的完整实现逻辑。分区操作的目标是将数组分为两部分:小于基准值(pivot)的元素和大于等于基准值的元素。条件判断用于确定元素是否需要交换位置。首先sort第三格自定义函数主要命名为cmp。并且返回值是0时才会交换。
2026-04-30 12:44:59
27
原创 C++STL参考手册!!!管理员大大求过!!!(被拒绝4次了)
【摘要】作者在微信"聊书斋录"公众号发起投票活动,恳请网友为"笔尖下的606班"作品中的1、5、10、17号选项各投一票(剩余两票可不投)。文中透露有人通过大学群聊已获得500多票,作者希望借助网友力量追赶票数。全文用大量"跪求"表达迫切请求,最后突然转为技术内容,列出C++预处理器指令、操作符优先级等编程知识点,最后再次呼吁投票支持。
2026-04-29 20:46:53
529
2
原创 P1006 [NOIP 2008 提高组] 传纸条
小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排坐成一个 m 行 n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标 (1,1),小轩坐在矩阵的右下角,坐标 (m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。
2026-03-21 14:07:02
171
原创 P1004 [NOIP 2000 提高组] 方格取数
某人从图的左上角的 A 点出发,可以向下行走,也可以向右走,直到到达右下角的 B 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字 0)。输入的第一行为一个整数 N(表示 N×N 的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。设有 N×N 的方格图 (N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 0。首先就是很多人的写法,先DP最优解,删除其中取过的数,然后再来一次,因为你所求的只是一条情况下的最优解,要同时考虑两条的情况。
2026-03-21 13:04:27
153
原创 P12379 [蓝桥杯 2023 省 Python B] 松散子序列
给定一个仅含小写字母的字符串 s,假设 s 的一个子序列 t 的第 i 个字符对应了原字符串中的第 pi 个字符。我们定义 s 的一个松散子序列为:对于 i>1 总是有 pi−pi−1≥2。设一个子序列的价值为其包含的每个字符的价值之和(a∼z 分别为 1∼26)。这道题就是一个子序列,各字符在原来的序列里是至少相隔一个的,就是继承前两个状态。求 s 的松散子序列中的最大价值。输入一行包含一个字符串 s。字符串求值也可以这样写一下的。要用O(n)的时间复杂度写。主要就是先弄出本身的值再算。
2025-09-12 13:26:00
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅