摘要:
三种经典排序方法 1. 三种常见排序算法解析 排序是编程的基石,选择合适的算法取决于稳定性、空间效率或速度等优先级。以下是三种广泛使用的排序方法,针对实际性能进行了优化。 算法 时间复杂度 主要优势 快速排序 平均: \(O(nlogn)\)最差: \(O(n²)\) 实际应用快;额外空间极少 归并 阅读全文
posted @ 2025-08-29 22:21
wz150432
阅读(6)
评论(0)
推荐(0)
摘要:
欧拉函数 1. 定义 欧拉函数 \(\phi(n)\) 统计满足 \(1 \leq k \leq n\) 且 \(\gcd(k,n)=1\) 的整数 \(k\) 的个数。 示例: \(\phi(6) = 2\)(1和5与6互质) \(\phi(7) = 6\)(1 - 6所有数都与质数7互质) 2. 阅读全文
posted @ 2025-08-29 22:20
wz150432
阅读(13)
评论(0)
推荐(0)
摘要:
快速乘法与快速幂 在编程竞赛和数学计算中,处理大数经常会遇到一个关键问题:溢出。即使使用C++的long long类型(大约能存储9.2e18的值),大数相乘或计算高次幂也很容易超出这个限制。快速乘法并非传统意义上的"快速",而是为处理大数值提供了安全的替代方案。 快速乘法:通过分解实现安全计算 快 阅读全文
posted @ 2025-08-29 22:20
wz150432
阅读(7)
评论(0)
推荐(0)
摘要:
欧几里得算法与扩展欧几里得算法(C++实现) 1. 欧几里得算法(最大公约数计算) 1.1 基本概念 欧几里得算法(又称辗转相除法)是一种计算两个整数最大公约数(GCD)的高效方法。它基于以下核心原理: gcd(a, b) = gcd(b, a % b) 其中 a % b 表示 a 除以 b 的余数 阅读全文
posted @ 2025-08-29 22:19
wz150432
阅读(10)
评论(0)
推荐(0)
摘要:
稀疏表(Sparse Table):通过 O(1) 查询实现高效区间查询 在竞争性编程中,我们经常需要高效地回答区间查询(例如“这个区间内的最大值是多少?”)。虽然线段树和树状数组很流行,但 稀疏表(Sparse Table)数据结构因其简洁性和速度而脱颖而出——它在 \(O(n \log n)\) 阅读全文
posted @ 2025-08-29 17:58
wz150432
阅读(8)
评论(0)
推荐(0)
摘要:
栈与队列:C++实现的核心线性数据结构 线性数据结构——元素按顺序排列——是编程的基石。其中,栈(Stack) 和 队列(Queue) 因其简洁性及在算法中的广泛应用(如栈用于深度优先搜索,队列用于广度优先搜索)而脱颖而出。 1. 栈:后进先出(LIFO) 栈是一种“单端”结构,元素的添加和移除都在 阅读全文
posted @ 2025-08-29 17:58
wz150432
阅读(7)
评论(0)
推荐(0)
摘要:
树堆(Treap):融合二叉搜索树与堆实现平衡高效性能 树堆(Treap,Tree + Heap 的缩写) 是一种兼具灵活性与高效性的数据结构,它将二叉搜索树(BST) 的有序性与堆(Heap) 的自平衡能力相结合。这种混合设计确保了插入、删除以及排名查询、前驱/后继查找等高级操作在平均时间复杂度 阅读全文
posted @ 2025-08-29 17:57
wz150432
阅读(6)
评论(0)
推荐(0)
摘要:
FFT(快速傅里叶变换)的原理与实现 多项式乘法的朴素做法是系数逐项相乘,时间复杂度为 \(O(n^2)\),而快速傅里叶变换(FFT) 借助"系数→点值→系数"的转换,将复杂度降至 \(O(n\log n)\)。下面结合数学原理和代码实现,完整解析FFT的核心逻辑。 一、FFT的分治思想:多项式的 阅读全文
posted @ 2025-08-29 17:57
wz150432
阅读(28)
评论(0)
推荐(0)

浙公网安备 33010602011771号