ICPC
文章平均质量分 86
主要是记录ACM赛制的知识博客
夏驰和徐策
一个喜欢打游戏的计算机专业学生;这是我的GitHub:https://github.com/XiaChiandXuce
展开
-
9.7.2 ACM-ICPC 数据结构 二叉堆
二叉堆是一种基于二叉树的特殊数据结构,是堆(Heap)结构中最常见的一种。完全二叉树性质:二叉堆是一棵完全二叉树,也就是说,除了最后一层之外,每一层的节点都是满的,并且最后一层的节点从左到右排列。堆性质:对于最大堆(Max-Heap),每个节点的值都大于或等于其子节点的值;对于最小堆(Min-Heap),每个节点的值都小于或等于其子节点的值。二叉堆是一种基于二叉树的特殊数据结构,它既是完全二叉树,又满足堆的性质。每个节点包含一个元素(或权值),在大根堆中,父节点的权值不小于子节点的权值;原创 2024-09-03 12:20:36 · 1097 阅读 · 0 评论 -
9.7.1 ACM-ICPC 数据结构 堆简介
在竞争性编程中,堆是一种非常重要的数据结构,通常用于实现优先队列,能够高效地管理动态元素集。本节将介绍堆的基本结构、操作及其在各种算法中的应用,尤其是在ACM-ICPC比赛中的应用。堆是一种特殊的基于树的数据结构,满足堆的性质。在最大堆(max-heap)中,对于每个节点ii的值大于或等于其子节点的值,即最大元素总是位于根节点。而在最小堆(min-heap)中,根节点存储的是最小元素,对于每个节点ii的值小于或等于其子节点的值。堆通常被实现为二叉树,但由于内存使用效率高且实现简单,堆通常使用数组表示。原创 2024-09-03 12:16:52 · 785 阅读 · 0 评论 -
9.6.1 ACM-ICPC 数据结构 并查集
合并(Union)和查找(Find)。它在解决连通性问题、图论问题(如最小生成树的 Kruskal 算法)以及其他需要动态连通性维护的场景中有着广泛应用。并查集的核心思想是通过树结构表示集合中的元素,并通过路径压缩和按秩合并等优化手段提升操作效率。本文将介绍并查集的基本概念、操作及优化方法,并结合实际例子进行说明。并查集作为一种经典的数据结构,在解决图论和集合操作问题中有着不可替代的作用。通过路径压缩和按秩合并优化后的并查集,其时间复杂度接近于常数时间,能够高效地处理大量动态操作。原创 2024-08-25 15:20:37 · 1109 阅读 · 0 评论 -
8.21 ACM-ICPC 数学之 傅里叶-莫茨金消元法
傅里叶-莫茨金消元法是一种用于求解线性不等式组的数学算法。该方法在运筹学、优化和计算几何中有着广泛的应用。其核心思想是通过逐步消去变量,最终描述出不等式组的可行区域。本文将详细解释傅里叶-莫茨金消元法的原理、应用,并通过一个示例展示其具体操作步骤。原创 2024-08-25 15:11:06 · 997 阅读 · 0 评论 -
10.1 ACM-ICPC 图论图论简介
图论研究图,这些图是用于建模对象之间关系的数学结构。一个图由顶点(或节点)和连接它们的边组成。无向图:边没有方向。节点之间的连接是双向的。有向图(有向图):边有方向,表示节点之间的单向关系。加权图:边带有权重,表示值如成本、距离或容量。无权图:边没有权重。图可以用来表示各种现实世界中的问题,从社交网络和交通系统到调度和资源分配。原创 2024-07-27 15:13:33 · 397 阅读 · 0 评论 -
8.19.1 ACM-ICPC 博弈论 博弈论简介
博弈论是一门数学和经济学交叉的学科,研究参与者(玩家)在冲突或合作情境下的策略选择和结果。ACM-ICPC中的博弈论问题通常涉及到两人或多人游戏,研究如何在完全信息或不完全信息的条件下进行最优决策。原创 2024-07-27 10:17:19 · 515 阅读 · 0 评论 -
8.18.3 ACM-ICPC 概率论 随机变量
随机变量是一个函数,将样本空间的每个样本映射到一个实数。根据其取值的不同,随机变量可以分为离散型和连续型。随机变量是一个函数,将样本空间的每个样本映射到一个实数。具体来说,给定概率空间 (Ω,F,P)(\Omega, \mathcal{F}, P)(Ω,F,P),定义在样本空间 Ω\OmegaΩ 上的函数 X:Ω→RX : \Omega \to \mathbb{R}X:Ω→R 若满足:对任意 t∈Rt \in \mathbb{R}t∈R 都有则称 XXX 为随机变量。原创 2024-07-23 10:30:27 · 1075 阅读 · 0 评论 -
8.18.2 ACM-ICPC 概率论 条件概率与独立性
条件概率表示在一个事件已经发生的前提下,另一个事件发生的概率。其计算公式为: P(A∣B)=P(A∩B)P(B)P(A|B) = \frac{P(A \cap B)}{P(B)}P(A∣B)=P(B)P(A∩B) 其中,P(A∩B)P(A \cap B)P(A∩B) 是事件 AAA 和 BBB 同时发生的概率,而 P(B)P(B)P(B) 是事件 BBB 发生的概率 () (Wikipedia)。两个事件 AAA 和 BBB 是独立的,如果事件 AAA 的发生与事件 BBB 的发生没有任何关系。原创 2024-07-21 09:11:13 · 557 阅读 · 0 评论 -
8.18.1 ACM-ICPC 概率论 基本概念
样本空间Ω\OmegaΩ:指明随机现象所有可能出现的结果。事件域F\mathcal{F}F:表示我们所关心的所有事件。概率PPP:描述每一个事件发生的可能性大小。一个随机现象中可能发生的不能再细分的结果被称为样本点。所有样本点的集合称为样本空间,通常用 Ω\OmegaΩ 来表示。一个随机事件是样本空间 Ω\OmegaΩ 的子集,由若干样本点构成,用大写字母 A,B,C,⋯A, B, C, \cdotsA,B,C,⋯ 表示。原创 2024-07-21 09:04:42 · 900 阅读 · 0 评论 -
8.17.2 ACM-ICPC 群论 置换群
置换群是由一个集合上的所有置换组成的群。对于一个集合 XXX,其置换群 SXS_XSX 包含所有从 XXX 到 XXX 的双射函数(即一一对应的映射),这些映射在复合运算下形成一个群。如果 X={1,2,…,n}X = \{1, 2, \ldots, n\}X={1,2,…,n},则对应的置换群记作 SnS_nSn,称为对称群。它包含所有 nnn 个元素的排列。原创 2024-07-20 22:01:19 · 1078 阅读 · 0 评论 -
8.17.1 ACM-ICPC 群论 群论简介
群(Group)是数学中的一个基本结构,它广泛应用于各个领域,特别是在代数学中。闭合性(Closure):对于任意的 a,b∈Ga, b \in Ga,b∈G,有 a⋅b∈Ga \cdot b \in Ga⋅b∈G。结合性(Associativity):对于任意的 a,b,c∈Ga, b, c \in Ga,b,c∈G,有 (a⋅b)⋅c=a⋅(b⋅c)(a \cdot b) \cdot c = a \cdot (b \cdot c)(a⋅b)⋅c=a⋅(b⋅c)。单位元。原创 2024-07-20 21:43:39 · 606 阅读 · 0 评论 -
8.16.2 ACM-ICPC 线性规划 单纯形算法
单纯形法是解决线性规划问题的一个有效算法。线性规划就是在一组线性约束条件下,求解目标函数最优解的问题。原创 2024-07-19 16:50:40 · 1233 阅读 · 0 评论 -
8.16.1 ACM-ICPC 线性规划 线性规划简介
线性规划(Linear Programming, LP)是一种数学方法,用于在满足一组线性不等式或等式约束条件下,寻找一个线性目标函数的最大值或最小值。线性规划广泛应用于各个领域,如经济学、工程学、管理学等,特别是在资源分配、生产计划和调度等方面具有重要作用。在ACM-ICPC竞赛中,线性规划也是一种常见的优化工具。原创 2024-07-17 20:48:23 · 696 阅读 · 0 评论 -
8.15.12 ACM-ICPC 线性代数 Jordan标准型
在线性代数中,Jordan标准型(Jordan Canonical Form, JCF)是一种矩阵的标准形式,它将矩阵分解为尽可能简单的块状形式。在ACM-ICPC竞赛中,掌握Jordan标准型的计算和应用技巧对选手而言是非常重要的。Jordan标准型为矩阵分析提供了一个强有力的工具。对于ACM-ICPC等竞赛,掌握Jordan标准型的计算方法和应用技巧无疑会提升选手的数学水平和解题能力。Jordan标准型是一个上三角矩阵,其中对角线上的元素是矩阵的特征值,而对角线以上的部分可能包含1。原创 2024-07-17 20:43:43 · 903 阅读 · 0 评论 -
8.15.11 ACM-ICPC 线性代数 对角化
对角化是指将一个方阵AAA表示成一个对角矩阵DDD的形式,这个对角矩阵是与AAA相似的矩阵。具体来说,如果存在一个可逆矩阵PPP,使得:其中,DDD是一个对角矩阵,PPP是由AAA的特征向量构成的矩阵。原创 2024-07-16 08:51:04 · 354 阅读 · 0 评论 -
8.15.10 ACM-ICPC 线性代数 特征多项式
特征多项式(Characteristic Polynomial)是一个与矩阵相关的多项式,它反映了矩阵的特征值。设 AAA 是一个 n×nn \times nn×n 的方阵,III 是同维数的单位矩阵,则矩阵 AAA 的特征多项式定义为:其中,det\detdet 表示矩阵的行列式,λ\lambdaλ 是一个变量。特征多项式是理解和分析矩阵的重要工具,通过它可以求解矩阵的特征值和特征向量。在ACM-ICPC竞赛中,掌握特征多项式的计算方法和性质,可以帮助选手更好地解决涉及线性代数的问题。原创 2024-07-16 08:46:25 · 665 阅读 · 0 评论 -
8.15.9 ACM-ICPC 线性代数 线性映射
线性映射(Linear Map)是两个向量空间之间的映射,满足以下两个条件:简单来说,线性映射保持向量的加法和标量乘法运算。原创 2024-07-14 20:03:28 · 738 阅读 · 0 评论 -
8.15.8 ACM-ICPC 线性代数 线性基
线性基是线性空间中的一个向量组,它具有生成整个空间的能力,同时向量组中的向量彼此线性无关。形式上,如果 VVV 是一个线性空间,向量组 {v1,v2,…,vn}\{v_1, v_2, \ldots, v_n\}{v1,v2,…生成整个空间。原创 2024-07-13 09:34:32 · 1028 阅读 · 0 评论 -
8.15.7 ACM-ICPC 线性代数 线性空间
线性空间是一组向量的集合,这些向量可以通过加法和数乘运算进行组合,并满足特定的代数性质。加法闭包: 对于任何两个向量 uuu 和 vvv , u+vu + vu+v 仍然是线性空间中的元素。数乘闭包: 对于任意向量 uuu 和数 α\alphaα , αu\alpha uαu 也是线性空间中的元素。加法交换律加法结合律零向量存在: 存在一个零向量 000 ,使得对于任意向量 uuu , u+0=uu + 0 = uu+0=u。加法逆元存在。原创 2024-07-13 09:17:01 · 925 阅读 · 0 评论 -
8.15.6 ACM-ICPC 线性代数 行列式
行列式是一个与方阵相关的标量量。对于一个 n 阶方阵 AAA,行列式记作 det(A)\det(A)det(A) 或 ∣A∣|A|∣A∣。行列式的具体定义如下:对于更高阶的行列式,可以使用递归展开法,即将行列式展开为其余子矩阵的行列式之和。手动计算较低阶的行列式可以采用这种方法,其时间复杂度为阶乘量级。使用记号 π(j1j2⋯jn)\pi(j_1j_2\cdots j_n)π(j1j2⋯jn) 表示排列 j1j2⋯jnj_1j_2\cdots j_nj1j2⋯jn 的逆序数。原创 2024-07-12 15:23:30 · 1073 阅读 · 0 评论 -
8.15.5 ACM-ICPC 线性代数 矩阵
对于矩阵 AAA,主对角线是指 Ai,iA_{i,i}Ai,i 的元素。一般用 III 来表示单位矩阵,就是主对角线上为 1,其余位置为 0。原创 2024-07-11 14:14:20 · 978 阅读 · 0 评论 -
8.15.2 ACM-ICPC 线性代数 向量
向量是线性代数中的基础概念,也是ACM-ICPC竞赛中的重要工具。在实际竞赛中,熟练运用向量相关算法和技巧,将会在解决复杂问题时带来极大的优势。在ACM-ICPC编程竞赛中,线性代数是一个非常重要的数学基础,而向量作为其中的基本概念,更是各种算法实现的关键。本文将详细探讨向量的基本概念、向量运算及其在编程竞赛中的应用。通过对向量的深入理解和练习,我们可以在ACM-ICPC等编程竞赛中更好地应对各种挑战,取得更优异的成绩。向量减法类似于向量加法,是将两个向量的对应分量相减。原创 2024-06-30 21:03:19 · 468 阅读 · 0 评论 -
8.15.3 ACM-ICPC 线性代数 内积和外积
内积的一个重要应用是计算两个向量之间的夹角 θ\thetaθ,通过以下公式:其中,∣a∣|\mathbf{a}|∣a∣ 和 ∣b∣|\mathbf{b}|∣b∣ 分别是向量 a\mathbf{a}a 和 b\mathbf{b}b 的模。++i) {反交换律分配律结合律。原创 2024-06-30 21:10:54 · 376 阅读 · 0 评论 -
8.15.1 ACM-ICPC 组合数学 线性代数简介
我认为,线性代数作为一门在实际解决问题过程中衍生出来的学科很有研究的必要性。它是后面研究描述人工智能各种问题和方法的强有力工具早在几千年前,就有古人应用线性方程组解决问题,而如今,线性代数仍然应用广泛。原创 2024-06-29 16:35:51 · 974 阅读 · 0 评论 -
8.14.16 ACM-ICPC 组合数学 图论计数
nnn 个点的图至多有 (n2)\binom{n}{2}(2n) 条边,每条边根据其出现与否有两种状态,每种状态之间独立,因而有 gn=2(n2)g_n = 2^{\binom{n}{2}}gn=2(2n)。注意到对于每个连通二分图,我们恰好有两种不同的染色方法,对应到两组不同的连通 2 染色图,因而对 gng_ngn 进行连通化,得到的序列恰好是 b1nb1_nb1n 的两倍,而 bnb_nbn 则由 b1nb1_nb1n 进行逆连通化得到。在之前的例题中已被解决,考虑欧拉图。原创 2024-06-29 16:16:17 · 956 阅读 · 0 评论 -
8.14.14 ACM-ICPC 组合数学 范德蒙德卷积
范德蒙德卷积是指通过两个序列的卷积来计算一个新的序列,其定义如下:其中,A(i)A(i)A(i) 和 B(j)B(j)B(j) 是两个已知序列,C(k)C(k)C(k) 是通过卷积得到的新序列。原创 2024-06-29 11:32:09 · 811 阅读 · 0 评论 -
8.14.13 ACM-ICPC 组合数学 分拆数
分拆数是组合数学中的重要概念,涉及到生成函数、递归关系和动态规划等多种方法。分拆数不仅在理论数学中具有重要地位,而且在实际应用中也发挥着重要作用。理解和掌握分拆数的计算方法和性质,对于深入研究组合数学和解决实际问题具有重要意义。原创 2024-06-21 23:49:20 · 894 阅读 · 0 评论 -
8.14.12 ACM-ICPC 组合数学 Eulerian Number
Eulerian 数 A(n,k)A(n, k)A(n,k) 表示在 nnn 个元素的所有排列中,恰好有 kkk 个位置,前一个元素比后一个元素大的排列数目。换句话说,Eulerian 数 A(n,k)A(n, k)A(n,k) 是有 kkk 个“下降”(descents)的 nnn 元排列的个数。Eulerian 数 A(n,m)A(n, m)A(n,m) 表示从 1 到 n 中恰好有 mmm 个元素大于前一个元素(即有 mmm 个“上升”)的排列数目。原创 2024-06-21 11:23:11 · 918 阅读 · 0 评论 -
8.14.11 ACM-ICPC 组合数学 Entringer Number
Entringer 数字 E(n,k)E(n, k)E(n,k) 是一种排列问题中的计数工具,用来表示从 nnn 个元素中选择 kkk 个元素的特定排列方式。具体来说,Entringer 数字的定义如下:表示从 nnn 个元素中选择 kkk 个元素的所有排列方式,其中每个排列都是先递增后递减的。这种排列被称为摆动排列(zigzag permutation)或摆动序列(zigzag sequence)。首元素是 k;原创 2024-06-21 10:48:12 · 680 阅读 · 0 评论 -
8.14.10 ACM-ICPC 组合数学 伯努利数
伯努利数 BnB_nBn 是通过下面的递推公式定义的:其中 (n+1k)\binom{n+1}{k}(kn+1) 是二项式系数。伯努利数在组合数学中具有重要地位,其广泛应用于数论、高次求和、欧拉-麦克劳林公式以及组合计数问题中。掌握伯努利数的性质和计算方法,对于解决 ACM-ICPC 编程竞赛中的复杂数学问题具有重要意义。通过以上内容的学习和代码实现,读者可以更好地理解和应用伯努利数。伯努利数在组合数学中占有重要地位,其应用范围包括高次求和、欧拉-麦克劳林公式、组合计数等。原创 2024-06-20 15:29:35 · 1017 阅读 · 0 评论 -
8.14.9 ACM-ICPC 组合数学 贝尔数
贝尔数 BnB_nBn 表示将一个包含 nnn 个元素的集合划分为若干个非空子集的不同方式的数量。例如,贝尔数 B3B_3B3 表示将包含3个元素的集合划分为不同非空子集的方式数。贝尔数 BnB_nBn 表示基数为 nnn 的集合的划分方法的数目。一个集合 SSS 的划分是将 SSS 分割成若干个两两不相交的非空子集。原创 2024-06-19 14:46:05 · 1054 阅读 · 0 评论 -
8.14.8 ACM-ICPC 组合数学 斯特林数
斯特林数是组合数学中的一个重要概念,广泛应用于划分问题和排列问题。通过掌握斯特林数的定义、性质和应用,可以更好地解决 ACM-ICPC 竞赛中的组合数学问题。在实际应用中,递归和动态规划是计算斯特林数的两种主要方法。第二类斯特林数(斯特林子集数) {nk}\begin{Bmatrix}n\\ k\end{Bmatrix}{nk},也可记作 S(n,k)S(n,k)S(n,k),表示将 nnn 个两两不同的元素,划分为 kkk 个互不区分的非空子集的方案数。原创 2024-06-17 11:08:24 · 869 阅读 · 0 评论 -
8.14.7 ACM-ICPC 组合数学 卡特兰数
卡特兰数是一列自然数,通常用C_n表示。卡特兰数的递推公式为:其中,C_0 = 1。卡特兰数是组合数学中的一个重要数列,广泛应用于括号匹配、二叉树计数和多边形三角剖分等问题。通过掌握卡特兰数的性质和应用,可以更好地解决ACM-ICPC竞赛中的组合数学问题。在实际应用中,递归和动态规划是计算卡特兰数的两种主要方法。原创 2024-06-16 19:02:51 · 1070 阅读 · 0 评论 -
8.14.6 ACM-ICPC 组合数学 错位排列
错位排列(Derangement)是指在一个排列中,没有任何元素出现在其原来的位置上。换句话说,对于 1 到 nnn 的排列 PPP,如果对所有 iii 都满足 Pi≠iP_i \ne iPi=i,则称 PPP 是 nnn 的错位排列。错位排列是没有不动点的排列,即没有长度为 1 的循环。原创 2024-06-13 21:20:06 · 698 阅读 · 0 评论 -
8.14.5 ACM-ICPC 组合数学 斐波那契数列
斐波那契数列(Fibonacci sequence)是一个在数学和计算机科学中具有重要意义的数列。它由意大利数学家斐波那契在他的著作《Liber Abaci》中首次引入。这个数列的每一个元素都是前两个元素的和,从而形成了一个递归的结构。斐波那契数列的定义如下:对于 n≥2n \geq 2n≥2:这个数列的前几项为:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...斐波那契数列具有许多有趣的数学性质和应用。下面列出一些常见的性质:递归性质:如定义所示,斐波那契数列是一个递原创 2024-06-13 21:08:33 · 763 阅读 · 0 评论 -
8.14.4 ACM-ICPC 组合数学 康托展开
康托展开是一个将排列转换为一个整数序列的数学方法,在计算机科学中具有广泛的应用,特别是在组合数学和算法竞赛中。康托展开允许我们对排列进行唯一的编码和解码,从而使排列的处理变得更加高效和简便。康托展开的主要思想是利用排列中每个元素的位置来确定其唯一编码。这种编码方式可以帮助我们在求解排列相关问题时,快速地进行计算和判断。原创 2024-06-13 20:56:47 · 592 阅读 · 0 评论 -
8.14.3 ACM-ICPC 组合数学 容斥原理
容斥原理用于计算多个集合并集的大小。基本思想是先计算每个集合的大小,再减去所有两个集合交集的大小,加上所有三个集合交集的大小,以此类推,直到考虑所有集合的交集。容斥原理是一种强大而灵活的工具,广泛应用于组合数学和计算机科学中的各种问题。通过理解和应用容斥原理,我们可以解决许多复杂的计数问题。无论是在数学竞赛还是实际应用中,掌握容斥原理都将极大地提高问题解决能力。原创 2024-06-13 20:53:49 · 684 阅读 · 0 评论 -
8.14.2 ACM-ICPC 组合数学 抽屉原理
抽屉原理的基本形式可以简单地表述为:如果将$n$个物品放入$m$个抽屉中,并且$n > m$,那么至少有一个抽屉中包含多于一个物品。抽屉原理是一种强大而简单的工具,广泛应用于组合数学和计算机科学中的各种问题。通过理解和应用抽屉原理,我们可以轻松解决许多看似复杂的问题。无论是在数学竞赛还是实际应用中,掌握抽屉原理都将极大地提高问题解决能力。原创 2024-06-13 00:40:29 · 831 阅读 · 0 评论 -
10.4 重积分的应用
如果考虑平面薄片对薄片外一点 P0(x0,y0,z)P_0 (x_0, y_0, z)P0(x0,y0,z) 处单位质量的质点的引力,设平面薄片占有 xyxyxy 平面上的有界闭区域 DDD,其面密度为 μ(x,y)\mu(x, y)μ(x,y),那么只要将上式中的密度 ρ(x,y,z)\rho(x, y, z)ρ(x,y,z) 换成面密度 μ(x,y)\mu(x, y)μ(x,y),将 Ω\OmegaΩ 上的三重积分换成 DDD 上的二重积分,就可得到相应的计算公式。现在要找该薄片的质心的坐标。原创 2024-06-11 20:34:41 · 1215 阅读 · 0 评论 -
8.14.1 ACM-ICPC 组合数学 排列组合
排列组合是组合数学中的基础内容。在解决实际问题和竞赛编程中,它们都扮演着重要角色。排列是指从给定的元素中按一定顺序取出若干元素进行排序;组合则是从给定的元素中取出若干元素,不考虑顺序。排列组合的核心问题是研究满足特定条件的排列和组合的数量。它与古典概率论有着密切的联系。原创 2024-06-11 19:58:31 · 638 阅读 · 0 评论