自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gohldg的博客

Anything can be anything you want.

  • 博客(26)
  • 收藏
  • 关注

原创 C++算法·贪心例题讲解

本文研究了字符串分割问题,给定一个长度为n的字符串s和整数k,要求将s分割为k+1段连续非空子串,计算所有可能的分割价值。价值定义为各子串极长颜色段数之和。通过分析字符串的特征分界点,推导出最小和最大可能价值,并给出计算两种极端情况的公式。最终答案即为可能价值区间的大小。当无法分割时输出0。该解法通过贪心策略确定边界,时间复杂度为O(n),适用于大规模数据。

2025-10-07 19:57:47 865

原创 【Math&其他】博饼概率计算

本文计算了中秋博饼游戏各奖项的概率。状元插金花、六博红等特殊奖项概率极低(0.002%-0.032%),五子登科和状元概率分别为0.321%和0.771%。普通奖项如对堂、三红概率较高(1.543%-5.358%)。计算显示,单次博到状元概率约1.138%,13轮内博到状元概率约13.825%。文中使用组合数公式详细计算了46656种可能结果中各奖项的组合数。

2025-09-25 22:27:29 1451

原创 【Math】初三第一、二单元测试卷(测试稿)

摘要: 本试卷为初三数学综合练习卷,涵盖一元二次方程、二次函数等知识点,满分120分,时长120分钟。试题分为选择题(30分)、填空题(24分)和解答题(66分),难度中等偏上。重点考查方程解法、函数性质、几何应用及实际问题的数学建模能力,如利润最大化、动点问题等。解析强调数形结合与代数技巧,如配方法、根与系数关系等,并附参考答案与详细解析,帮助学生查漏补缺。

2025-09-20 11:31:40 1054 1

原创 C++算法·贪心例题讲解

本文分析了洛谷P1007独木桥问题。题目要求在长度为L的桥上,N个士兵以速度1移动,相遇时会转身,求全部撤离桥的最小和最大时间。关键思路是:每个士兵有两种撤离方式(向左或向右),计算每个士兵两种方式的时间消耗,取所有士兵最小时间的最大值作为最短撤离时间,取最大时间的最大值作为最长撤离时间。通过遍历士兵坐标并比较两种撤离时间,即可得到结果。代码实现简洁高效,时间复杂度为O(N)。

2025-09-16 22:04:18 1034

原创 C++·奇葩代码之信息轰炸器

此代码来自作者的朋友(代号咖啡)用于轰炸别人的奇葩C++代码。

2025-09-08 06:00:00 1118

原创 C++数据结构·堆

堆是一种重要的完全二叉树数据结构,分为最大堆和最小堆两种类型。最大堆的每个节点值大于等于子节点,最小堆则相反。堆通常用数组表示,支持O(log n)的插入和删除操作,能O(1)获取最大/最小值。本文详细介绍了堆的特性、表示方法和时间复杂度,并提供了C++模板代码,包括STL优先队列和手写堆的实现。通过合并果子问题(P1090)展示了堆的实际应用,给出了两种AC代码方案。最后推荐了相关刷题题单,帮助读者巩固堆的知识和应用能力。

2025-09-06 18:26:28 2877

原创 C++算法·进制转换

本文介绍了进制转换的基本原理和方法,重点讲解了二进制、八进制、十进制和十六进制之间的相互转换。文章通过5个例题详细演示了不同进制间的转换过程,包括二进制转十进制、十进制转二进制、八进制与二进制互转、十六进制转十进制以及五进制转十进制等。每种转换方法都配有清晰的步骤说明和计算公式,如"按权展开求和"和"除基取余法"。文章还提供了实用的转换技巧总结表,并给出C++代码实现二进制与十进制的互转。最后提出了一个有趣的二进制加密器实现思路,展示了进制转换在实际编程中的应用。

2025-08-23 23:09:29 2400

原创 C++基础·逻辑运算

C++逻辑运算基础摘要:本文介绍了C++中的基本逻辑运算符(&&、||、!)及其优先级规则,通过真值表展示了与、或、非、异或等运算的特性。提供了9个典型例题的详细解析过程,演示了运算符优先级判断和复合逻辑表达式的计算方法。内容涵盖逻辑运算在条件判断、程序流程控制中的应用场景,适合作为编程初学者的逻辑运算入门参考。文中特别强调了运算符优先级关系和括号的使用技巧,并提供了完整的运算结果验证。

2025-08-20 17:47:49 1290

原创 C++数据结构·线段树

线段树是一种高效处理区间操作的数据结构,支持区间查询和区间更新,时间复杂度均为O(log n)。其核心是通过二叉树预处理区间信息,叶子节点存储原始数据,非叶子节点存储子区间合并结果(如区间和、最值)。与普通二叉树不同,线段树节点表示区间范围而非单一数据,适合动态区间统计问题。模板代码包含建树、懒标记下传、区间查询和更新操作,典型应用如洛谷P3372题解所示,通过线段树实现区间加减和求和功能,4倍空间预处理是关键。注意不适用于非区间类问题或频繁全量重建场景。

2025-08-19 09:57:43 2862

原创 C++数据结构·结构体

本文介绍了C++中结构体的基本概念与应用。结构体是一种用户自定义的复合数据类型,用于打包相关数据(如坐标点、学生信息)。主要内容包括:1) 结构体的定义与内存分配特点;2) 核心组成部分(成员变量、运算符重载等);3) 与class的区别(默认访问权限不同);4) 典型应用场景(区间问题、图论等)。通过B2125例题演示了结构体的实际使用,包括定义学生结构体、排序比较函数等。最后建议在洛谷平台进行相关练习,并预告下期将讲解进制转换/图论等内容。

2025-08-15 23:22:42 919

原创 C++算法·贪心

本文介绍了贪心算法的定义、特点、适用场景及局限性。贪心算法通过局部最优选择希望达到全局最优,适用于具有贪心选择性质和最优子结构的问题如最小生成树、最短路径等。文章以NOIP2018提高组铺设道路题目为例,展示了贪心思路和代码实现,并推荐了洛谷贪心题单。贪心算法虽高效但不保证所有问题全局最优,需正确性验证。

2025-08-15 10:21:11 1558

原创 C++算法·递推递归

本文对比了递推与递归两种算法在阶乘计算中的应用,指出递推效率更高但递归更直观。通过洛谷P1255数楼梯例题,展示了如何结合高精度运算解决大数问题,并给出斐波那契数列的递推解法。文章包含算法模板、复杂度分析及推荐题单,适合初学者理解递推递归的核心思想与应用场景。

2025-08-13 23:04:02 1111

原创 C++算法·排序

本文系统介绍了排序算法的分类与实现。排序分为比较排序(时间复杂度下限O(nlogn),包括冒泡、选择、插入、快速、归并、堆排序)和非比较排序(可突破O(nlogn)限制,含计数、桶、基数排序)。文章提供了各类排序的C++模板代码(冒泡、选择、快速、插入、计数排序),并分析了其时间/空间复杂度及稳定性。最后以洛谷P1177排序模板题为例,演示了STL sort的实战应用,并推荐了相关题单。排序算法选择需根据数据特点,如快速排序适合通用场景,归并排序保证稳定性,计数排序适用于小范围整数。

2025-08-12 23:49:33 1071

原创 C++算法·前缀和

前缀和是一种高效处理区间求和问题的算法技巧,通过预处理构建前缀和数组,使区间和查询优化至O(1)时间复杂度。其核心是将数组a[1...n]预处理为s[1...n],其中s[i]表示前i项的和,这样区间[l,r]的和可通过s[r]-s[l-1]快速计算。相比暴力遍历的O(n)查询时间,前缀和在静态数据且频繁查询的场景下优势明显。文中提供了C++代码模板和洛谷P8218例题的AC代码,展示了前缀和的实际应用。前缀和体现了"空间换时间"的思想,是算法竞赛中的基础且重要技巧。

2025-08-11 23:08:50 1031

原创 C++算法·差分

摘要:差分是一种高效处理区间更新的算法技巧,通过构建差分数组将区间操作转换为单点操作,将时间复杂度从O(N)优化至O(1)。其核心在于差分数组d[i] = a[i] - a[i-1],通过d[L]+=val和d[R+1]-=val实现区间[L,R]的增量操作,最后用前缀和还原数组。差分适用于多次区间更新、单次查询场景,空间复杂度O(N)。文章提供了最小值版和区间和版的模板代码,并以洛谷P2367语文成绩题为例,展示如何用差分快速处理区间加分并求最小值。最后推荐了相关题单供练习。

2025-08-10 23:55:18 1000

原创 C++数据结构·二叉树【例题补充】

摘要 本文介绍了如何根据二叉树的中序和后序遍历结果推导出先序遍历。题目给出中序(BADC)和后序(BDCA)排列,通过定位根节点(A),划分左右子树,最终得到先序排列ABCD。文中提供了遍历方式的对比表,并附有C++代码实现,通过递归方法完成遍历转换。该解法思路可应用于类似问题,如已知前序和中序求后序的情况。文章还提供了相关例题链接供读者练习。

2025-08-09 14:58:06 361

原创 C++数据结构·二叉树

本文系统介绍了二叉树的常见类型及其核心特性。主要内容包括:1) 满二叉树(严格平衡,节点数为2^(h+1)-1);2) 完全二叉树(最后一层靠左连续排列);3) 二叉搜索树(有序结构,支持高效查找/插入/删除);4) AVL树(通过旋转保持平衡,确保O(log n)操作)。同时详解了前序、中序、后序三种遍历方式的特点与应用场景(如BST中序遍历可获有序序列)。文章附有代码示例和性质总结,推荐配合洛谷题单进行实践练习。

2025-08-08 23:59:13 1520

原创 C++数据结构·树状数组

树状数组(Fenwick Tree)是一种高效维护前缀和及区间信息的数据结构,通过二进制拆分优化操作,时间复杂度为O(log n)。其核心函数包括:lowbit(获取最低位1)、sum(前缀和查询)和add(单点更新)。例题P3374展示了树状数组的典型应用:单点修改和区间查询。代码实现简洁,通过二进制位运算实现高效操作。树状数组适用于大规模数据场景,是解决动态前缀和问题的理想选择。

2025-08-07 23:54:09 452

原创 C++算法·深度优先搜索

摘要: 深度优先搜索(DFS)是一种经典的图遍历算法,采用“一条路走到黑”的策略,通过递归或显式栈实现。本文介绍了DFS的两种实现方式(递归与栈),并给出二叉树遍历和迷宫寻路的代码示例。算法分析指出DFS的时间复杂度为O(V+E),适用于连通性检测和回溯问题,但不适合求最短路径。最后以洛谷P1605迷宫题为例,展示了如何用DFS统计从起点到终点的方案数,核心思路是通过标记访问状态避免重复路径。

2025-08-06 23:59:55 1324

原创 C++算法·动态规划

动态规划(DP)是一种通过分解问题为重叠子问题并存储子问题解来提高效率的算法。本文介绍了DP的核心要素:状态定义、状态转移方程和边界条件,并分类讲解了线性DP、区间DP、树形DP等7种常见类型。通过洛谷题单推荐了相关练习题,并以"过河卒"问题为例,展示了使用二维数组标记障碍点后递推求解路径数的DP应用。文章还提及了斜率优化等DP优化技术,为初学者提供了全面的DP学习指南。

2025-08-05 14:22:00 913

原创 C++算法·高精度运算

[摘要] 本文系统介绍了高精度运算技术,包括int128和高精度两种方案。int128适用于39位以内数据,提供便捷的读写模板;而高精度通过字符串模拟手工运算,支持千位以上计算,详细讲解了加减乘除的实现原理和代码模板。文章对比了不同数据类型的存储范围,分析了高精度优化方法(压位储存、FFT加速),列举了典型应用场景(大数阶乘、高精度幂运算等),并提供了洛谷OJ的对应练习题。Python因自带高精度而被特别提及,最后预告了动态规划作为下一篇主题。

2025-08-05 11:59:35 1079

原创 C++数据结构·队列

本文介绍了队列(queue)这种先进先出的线性数据结构。主要内容包括:1)队列的基本概念和操作流程(入队、排队、出队);2)队列的C++实现方法,包括创建队列、入队(push)、出队(pop)、访问队头(front)/队尾(back)、获取队列大小(size)和判空(empty)等函数操作;3)队列的应用场景,如任务队列、BFS算法和缓冲区管理等;4)通过洛谷B3616队列模板题展示队列的实际应用,提供了完整的解题代码和分析。文章强调使用队列时要注意判空操作以避免运行时错误,适合数据结构初学者学习队列的基本

2025-08-04 10:46:43 1235

原创 C++算法·最大公因数&最小公倍数

本文介绍了最大公因数(GCD)和最小公倍数(LCM)的基本概念及其算法实现。GCD采用辗转相除法,LCM可通过与GCD的关系公式或暴力枚举实现。文章提供了C++代码示例,并通过洛谷例题B3634展示了实际应用,包括输入输出处理和函数调用。最后指出GCD和LCM在约分通分中的用途,以及两者之间的数学关系式GCD×LCM=ab。适合编程初学者学习基础数论算法。

2025-08-03 23:43:47 1113

原创 C++数据结构·栈

OK啊今天来发个栈的文章栈的定义栈是一种特殊的线性表只允许在固定的一端进行插入和删除元素操作进行插入和删除的一端称为栈顶,另一端称为栈底栈中的数据只会先进后出补充:若无万能头则需声名栈的基本操作1.建立2.压栈3.出栈/弹栈4.获取栈顶5.获取栈的大小6.检查栈是否为空附:把1个栈倒过来OK讲完了顺便放一个卡内存的代码可以去试试实测:5秒卡顿,15~20秒死机,30秒卡炸。

2025-08-03 11:41:48 181

原创 火车头/信仰优化

用于缩短程序运行速度的手法targetoptimize1optimize2optimize3optimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimize。

2025-08-02 10:34:49 576 1

原创 C++算法·二分

首先要明白这个算法的运用范围二分是用于查找一个数在这个数列中所在的位置比一般的for直接暴力查找要快其原理在于将数组分为2个部分并依次用这个数的大小找出这个数在哪个区间,找到直接停止但是二分在特殊情况下才能使用条件就是这个数列必须是一个递增序列明白了这些,我们给道例题备注:例题来源于。

2025-08-01 22:52:44 1219

空空如也

空空如也

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

TA关注的人

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