自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 P1041题解

摘要:本文提出了一种基于搜索的算法来解决特定图论问题。算法核心思想是将原始图转换为树结构,通过Dijkstra算法计算节点到根的距离作为感染时间。然后采用DFS遍历,在每一层选择保护某个子树来最大化存活节点数。算法使用标记数组记录保护状态,通过回溯方式暴力搜索所有可能的保护组合。该方法虽然时间复杂度较高,但通过巧妙的问题转化和剪枝策略实现了有效求解,最终输出最小感染节点数。

2025-10-22 19:07:17 188

原创 P1040题解

【摘要】本文介绍了一道基于中序遍历的区间DP问题。通过定义dp[i][j]表示序列i到j的最大值,利用区间DP算法求解最优二叉搜索树。关键点在于记录每个区间的根节点,以便后续输出前序遍历结果。算法的时间复杂度为O(n^3),实现了最大值计算和前序遍历输出。代码展示了完整的实现过程,包括初始化、状态转移和递归输出前序序列。

2025-10-18 17:25:04 187

原创 ABC426A-D+F题解

本文分享了5道编程竞赛题的解题思路与实现代码。A题通过map维护名字等级进行简单比较;B题使用map统计字符出现次数找出唯一字符;C题利用差分数组高效处理批量电脑升级操作;D题分析字符串操作规律计算最小操作次数;F题采用线段树优化区间查询。题目难度从简单到中等,覆盖了基础数据结构与算法应用。

2025-10-08 16:56:55 447

原创 P2801题解

本文提出了一种分块算法解决区间修改和查询问题。通过将数组分为多个块,预处理时对每个块内元素排序。对于区间修改,整块采用懒标记处理,散块则暴力修改后重新排序;查询时,整块使用二分查找,散块暴力统计。算法实现了O(√n)的复杂度,适用于大规模数据。关键点包括正确处理懒标记、散块处理和整块查询的优化。代码实现展示了分块、排序、修改和查询的具体操作。

2025-10-05 16:00:00 237

原创 P13978题解

这篇文章介绍了一个分块算法实现,用于处理区间修改和查询问题。作者采用了以下方法:将数据分块并排序,修改时对整块加懒标记、散块暴力修改后重排序;查询时对整块二分查找、散块暴力遍历。文章提醒了注意事项:1.不能忘记分块处理;2.二分查找时要注意边界条件。最后作者自嘲因为没写build函数而不得不优化代码性能。

2025-10-05 10:24:27 229

原创 P13977题解

本文介绍了一种使用分块算法解决数列查询问题的方案。通过将数列分块并维护有序向量,实现了区间修改和查询操作。对于区间修改,采用标记处理整块、暴力处理散块的方法;对于查询操作,在整块中使用二分查找高效统计,散块则暴力处理。相比线段树,该方法更易实现且不易出错,特别适合处理复杂查询条件。文章包含完整C++实现代码,展示了分块排序、区间更新和查询统计的具体实现细节。

2025-10-02 15:19:08 147

原创 P1447题解

这道题目通过容斥原理计算网格点对间的特殊性质。关键发现是两点连线上的整数点数量等于它们的gcd值。作者采用埃氏筛思想,先计算gcd为i的点对数量dp[i]=(n/i)(m/i),再减去所有i的倍数以避免重复计数。最终答案为Σ(i2-1)*dp[i]。该解法利用逆向处理和后缀优化,将复杂度控制在可接受范围内。代码实现了这一思路,适用于较大规模的输入数据。

2025-10-01 20:21:14 151

原创 ABC425A-E题解

比赛题解摘要 本次比赛包含5道题目,难度建议为红红橙黄黄(简单到中等)。A题通过交替加减立方数求和;B题检查1~n的排列可行性;C题是RMQ问题,通过维护前缀和解决;D题是BFS模拟染色问题,需注意同时更新的处理;E题是组合数学题,用杨辉三角预处理组合数。各题解法包括:交替变量、重复元素检查、前缀和维护、双队列BFS优化、组合数预处理等技巧。 (字数:150字)

2025-09-29 20:28:57 633

原创 P3044题解

文章摘要:该文介绍了一种基于Dijkstra算法的暴力解法,用于解决最多5个城镇的最短路径问题。通过枚举所有城镇排列组合,计算每个非城镇点到各城镇的最短距离之和,取最小值作为最终结果。文中提供了完整的C++代码实现,包括预处理、Dijkstra算法和排列枚举等关键步骤。该解法时间复杂度为O(120n),虽然常数较大但仍可接受。代码使用邻接表存储图结构,并利用优先队列优化Dijkstra算法。

2025-09-27 18:45:46 215

原创 P3051题解

摘要:本文讨论了一个环形土堆调整问题,通过数学建模将问题转化为绝对值不等式求解。核心思路是利用前缀和计算土堆差值,排序后取中位数来最小化移动量。算法时间复杂度为O(nlogn),主要来自排序操作。代码实现简洁,仅需计算前缀和、排序求中位数并累加绝对差即可得到最优解。

2025-09-27 18:45:37 241

原创 P1407题解

摘要:该文探讨了一个基于图论的关系稳定性判定问题。通过将男女关系建模为有向图(夫妻关系女→男,情侣关系男→女),使用Tarjan算法求强连通分量。若夫妻节点处于同一强连通分量则判定为"Unsafe"关系,否则为"Safe"。文中给出了具体的C++实现代码,包括图的构建、Tarjan算法应用和结果判断逻辑。该解法将复杂的社交关系转化为图论问题,通过分析环状结构来评估关系稳定性。

2025-09-25 18:46:54 205

原创 P1053题解

摘要:这道思维题要求通过特定操作将初始排列转换为满足相邻条件的目标排列。关键在于:1)若存在无法满足的相邻关系则输出-1;2)否则通过线性推导构建目标排列;3)计算最少操作次数时,将排列视为环结构,寻找能使最多元素保持不动的旋转位移,最终结果为n减去最大不动元素数。时间复杂度为O(n)。

2025-09-24 19:00:00 263

原创 P1073题解

摘要:本文提出了一种分层图结合SPFA算法解决股票买卖问题的优化方法。通过构建三层图(未买入、已买入未卖出、已卖出)来表示不同交易状态,层间通过带权边连接表示买卖操作。该方法避免了tarjan缩点的复杂度,使用SPFA求最长路径来获取最大收益。代码实现了三层图的构建和状态转移,最终输出第三层终点节点的值即为最优解。

2025-09-24 17:46:02 184

原创 ABC424A-E题解

这一道题给你三条边的长度,问你这个组成的三角形是不是等腰三角形.那么我们只需分别判断是否有两个或更多数相等即可.

2025-09-23 19:00:00 1274

原创 CF842D题解

摘要:本文介绍了一种基于01trie树解决序列异或问题的方法。题目要求对序列进行异或操作后查询最小未出现的非负整数。核心思路是利用trie树结构,通过判断子树是否完整来确定缺失数字。对于修改操作,采用按位异或时交换左右子树的方法来提高效率。代码实现中使用了二进制位处理和动态维护trie树,最终达到高效查询的目的。

2025-09-23 15:15:10 282

原创 CF655E 题解

本文介绍了一种使用01Trie树解决异或相关问题的算法。通过预处理前缀异或和,将数值存入Trie树中,利用位运算特性与给定阈值k进行比较。当k的某位为1时,必须选择相反位路径;否则累加可选分支的计数值。算法优化了常规前缀和方法的复杂度,并采用从1开始编号的技巧简化边界处理。文末给出了核心代码实现,包括插入和查询函数,以及主函数处理输入输出的过程。该解法适用于处理大规模数据下的异或区间统计问题。

2025-09-21 18:46:43 146

原创 P1039题解

这道题目要求通过嫌疑人陈述找出凶手。数据范围较小(20人,7天),采用暴力枚举法。首先过滤无效信息,保留9种关键陈述。然后枚举每个可能的凶手和星期几,判断是否恰好有m人说谎,并确保每个人要么全说真话要么全说谎。最终输出唯一可能的凶手,否则输出无法确定或不可能。代码实现时需注意输入处理和边界条件,如getline可能出错建议使用cin。

2025-09-21 09:00:00 242

原创 ABC423A-E题解

讲述了ABC423A-E题目

2025-09-20 12:49:39 1082 1

原创 费马小定理的证明

摘要:费马小定理指出当a与质数p互质时,a^(p-1) ≡ 1 (mod p)。通过构造1到p-1的序列并将每个元素乘以a,证明乘积等于(p-1)!,从而得出定理成立。该定理可用于求乘法逆元,即a的逆元为a^(p-2) mod p。证明过程利用了模运算的性质和唯一性原理。

2025-09-19 19:03:30 151

原创 P1198题解

摘要:本文提出了一种基于ST表的高效算法,用于解决动态RMQ问题。针对20万规模的数据,采用反向ST表设计,支持O(logn)时间复杂度的插入操作和查询操作。通过预处理对数数组,将区间拆分为已维护的子区间,实现快速更新。查询时利用两个2的幂次区间覆盖目标区间,保证查询效率。算法巧妙避免了线段树的复杂实现,适用于需要频繁插入和查询的场景。代码实现简洁高效,通过动态维护ST表来响应插入操作,并支持区间最大值查询。

2025-09-17 20:17:46 193

原创 P1107题解

摘要:本文介绍了一道动态规划优化题目。原问题需要O(n³)复杂度,通过预处理pre数组优化至O(n²)。状态dp[i][j]表示第i棵树高度j时的最大柿子数,转移方程利用pre数组存储各高度最优解。关键优化在于将三重循环简化为双重循环,通过预处理避免重复计算,最终在合理时间内求解。

2025-09-16 21:07:07 299

原创 P1069题解

摘要:该题要求将几何增长的细菌均分给n^m个试管,求最短时间。解题关键在于分解质因数,检查细菌底数是否包含试管底数的所有质因数。若包含,则通过统计质数出现次数,进行除法比较取最大值;否则无解。代码实现中,先处理输入数据,然后对每个细菌进行质因数分解和比较,最终输出最小时间或-1表示无解。核心思路是质因数分解和最大值的比较计算。

2025-09-15 21:22:21 219

原创 P1043题解

摘要:本文探讨了环形区间分段最值问题的动态规划解法。针对暴搜效率低的问题,采用区间DP策略,通过断环成链处理环形结构。定义状态dp[i][j][l]表示区间i到j分成l段的最值,使用前缀和优化计算。状态转移方程考虑了分段交界点k,通过枚举左右端点实现高效更新。最终代码实现了O(n^3)时间复杂度的解法,能够处理200以内的数据规模,正确计算环形区间分段后的最大和最小值。

2025-09-13 22:05:34 267

原创 ABC420A-E题解

本次比赛包含5道题目,难度从简单到中等。A题计算月份变化,通过模运算即可解决。B题处理字符串加分规则,需统计少数群体进行加分。C题维护两个数组最小值之和,通过局部更新优化性能。D题是带开关的BFS题,需记录开关状态。E题使用并查集维护连通性和黑色节点数量。整体难度建议:红红橙黄黄(对应CF难度1200-1600)。

2025-08-26 19:00:00 448

原创 线段树详解【数据结构】

线段树是一种高效的区间操作数据结构,支持区间查询和修改操作,时间复杂度为O(logn)。其核心思想是将区间分解为二叉树结构,每个节点代表一个区间。通过懒标记技术实现高效的区间修改。虽然代码量较大,但通过合理优化(如动态开点)可以节省空间。线段树适用于各类区间问题,是算法竞赛中的重要工具。本文详细介绍了线段树的原理、实现方法(包括建树、懒标记下传、区间修改和查询等操作),并提供了完整代码示例和优化建议,帮助读者掌握这一数据结构。

2025-08-22 19:00:00 1005

原创 线段树模版

本文展示了一个线段树模板代码,用于实现区间增加和区间查询功能。代码包含:1)线段树结构体定义;2)建树函数build;3)下传标记函数pushdown;4)区间更新函数update;5)区间查询函数find。主函数处理输入输出,支持两种操作:1)区间[x,y]加k;2)查询区间[x,y]的和。该模板使用惰性标记(lazy)优化,时间复杂度为O(logN)。适用于处理大规模数据的区间修改和查询问题。

2025-08-22 19:00:00 210

原创 单调栈【数据结构】

摘要:单调栈是一种用于快速查找数组中元素左右侧第一个较大/较小值的特殊数据结构。其核心思想是维护一个单调递增或递减的栈,通过比较新元素与栈顶元素来决定弹出或保留元素。文章以数组{3,5,4,2,3}为例,演示了如何用单调栈找出每个元素右侧第一个较大值的下标,并提供了相应的代码实现。这种数据结构虽然实现简单,但常应用于较复杂的算法问题中,使用时需注意栈空判断以避免错误。

2025-08-19 19:00:00 531

原创 单调栈模版

【代码】单调栈模版。

2025-08-19 19:00:00 233

原创 ABC419 A-D 题解

文章摘要:本文分享了四道编程题的解法。A题通过if-else判断字符串匹配颜色;B题使用优先队列维护最小值;C题通过计算坐标最大距离求最短会合时间;D题利用差分数组高效处理字符串交换操作。题目难度依次为红橙橙橙。每道题都提供了完整代码实现,涵盖了基础字符串处理、数据结构和算法优化等知识点。

2025-08-18 19:00:00 449

原创 最小生成树 Kruskal+Prim算法【图论】

本文介绍了求解最小生成树的两种经典贪心算法:Prim和Kruskal。Prim算法从任意节点开始,每次选择与当前连通块相连的最小边扩展,使用优先队列优化后时间复杂度为O(ElogV)。Kruskal算法则直接对边排序,依次选择不构成环的最小边,利用并查集维护连通性,时间复杂度为O(ElogE)。文章通过具体图例演示了两种算法的执行过程,提供了C++实现代码,并比较了二者的特点:Prim适用于稠密图但实现较复杂,Kruskal实现简单但需预先排序所有边。两种算法虽然思路不同,但都基于贪心策略正确求解最小生成树

2025-08-15 19:00:00 713

原创 最小生成树 Kruskal+Prim算法模版【图论】

【代码】最小生成树 Kruskal+Prim算法模版【图论】

2025-08-15 19:00:00 376

原创 ABC418 A-E 题解

我们维护一个浮点数的map,存储每个斜率分别有多少条边对应,每次答案加上边数-1.此外我们需要格外注意,因为我们求斜边时可能会出现/0的现象,这会引发RE。然而,这个方法会超时,我们考虑优化。这道题定义了异或的反向操作,即如果参与运算的两数相等,返回1,否则返回0.输入给出一个字符串,求字符串的连续子串中可以通过合并相邻两数并返回运算结果而最终得出1的数量。A = {1,4,4,8},我们二分4得到坐标为3,这里的前缀和=9,同时用(4-3)*4=4,4+9+1=14,我们发现这与人工计算的答案一致。

2025-08-14 19:00:00 918 1

原创 普通+可撤销+扩展域并查集详解【数据结构】

本文介绍了并查集数据结构及其变体的核心原理与应用。基础并查集通过家族合并的类比实现节点合并与查询操作,采用启发式合并优化性能。进一步引入路径压缩技术提升查询效率,但该技术不适用于可撤销并查集。文章还讲解了扩展域并查集处理敌对关系等复杂场景,并通过食物链问题示例说明其应用。最后提供了基础并查集、可撤销并查集和扩展域并查集的代码实现,指出非互反关系需使用强连通分量算法处理。全文以生动的家族关系类比解析各类并查集的特性与适用场景。

2025-08-12 14:55:41 877

原创 普通+可撤销+扩展域并查集模版【数据结构】

本文展示了三种并查集实现方式:1) 普通并查集,支持快速查询和按秩合并;2) 可撤销并查集,增加了操作回退功能;3) 扩展域并查集,通过额外空间处理复杂关系。核心思想都是通过路径压缩和按秩合并来优化查询效率。普通版实现基础操作,可撤销版通过栈记录操作历史,扩展域版则利用额外数组维护对立关系。这些变体分别适用于不同场景,如普通版适合简单连通性查询,可撤销版适合需要回退的场景,扩展域版能处理敌对关系等复杂约束。

2025-08-12 13:05:23 153

原创 树状数组(补充版)【数据结构】

本文介绍了树状数组实现区间操作的两种方法。区间加单点查通过维护差分数组实现,在[l,r]区间加k时只需修改d[l]和d[r+1]。区间加区间查则通过维护两个树状数组c1和c2来优化计算,其中c1存储差分数组d[i],c2存储d[i]*i。相比线段树60行的代码量,这两种方法分别只需30行和40行左右,在简单区间操作场景下更简洁高效。但当需要处理更复杂操作时,仍建议使用线段树或分块等数据结构。

2025-08-10 15:23:43 379

原创 树状数组(补充版)模版纯享 【数据结构】

【代码】树状数组(补充版)模版纯享 【数据结构】

2025-08-10 13:22:31 130

原创 树状数组模版纯享版

【代码】树状数组模版。

2025-08-08 16:32:55 92

原创 树状数组 【数据结构】

本文介绍了树状数组(Fenwick Tree)的基本原理和应用。树状数组是一种高效处理单点修改和区间查询的数据结构,相比线段树具有代码简单、空间复杂度低的优势。核心原理是利用lowbit运算构建树状结构,通过x±lowbit(x)操作实现快速查询和修改。典型应用包括区间求和和求解逆序对问题,其中逆序对问题可通过离散化处理大数情况。文章提供了单点修改区间查询和求解逆序对的具体代码实现,并指出树状数组在复杂操作时可能不如线段树适用。

2025-08-08 14:51:17 981

原创 P1163 公式推理过程

这篇文章将重点讲述是如何将。

2025-05-14 19:47:53 227

原创 SPFA 算法详解 [单源最短路]

​什么是SPFA? SPFA其实就是bellman-ford算法(前面有提到过)的玄学优化. 究竟有多玄学呢? 这种算法不仅继承了原始算法可以判负环以及能跑负权图的特点, 还缩减了时间复杂度, 但如此强大的优化却并不受认可, 主要是因为有图可以克制SPFA,将其卡回原始算法的复杂度, 而负责人的出题人通常都会卡SPFA, 所以这个算法几乎已经死了, 所以它的应用范围多为随机图以及判定负环. 同时, 这种算法写起来比较轻松, 所以如果图中包含负权, 还是建议写一下. ​

2025-03-23 15:02:28 1253

差分约束模板(P5960)代码

差分约束是一种数学约束系统,主要用于处理一组未知数之间的不等式关系。它给出多个未知数,以及多组形如一个未知数减去另一个未知数小于等于某个值的约束不等式。 差分约束系统可以借助图论的最短路来求解。这是因为约束条件和最短路中的三角不等式有相似之处,求解最大值的过程也类似于最短路算法中的松弛过程。 在实际问题里,根据变量范围列出的不等式,在满足一定条件时能作为差分约束条件。要是从常规的起始点出发无法到达所有的点,就需要建立一个超级源点,让这个源点可以指向所有的点,这样才能从该源点到达其他所有点,源点到其他点的边权要根据具体题目要求来确定。

2025-11-03

树链剖分模板题代码,较简单

树链剖分模板题代码,较简单

2025-11-02

P1005代码,可供参考

可以下载供参考

2025-10-23

【数学计算工具 1.0】基于JavaScript的高精度计算器实现:支持表达式解析、函数绘图与数论几何概率综合运算系统设计

内容概要:本文展示了一个基于前端技术实现的高精度数学计算器网页应用,集成了表达式计算、数论运算、函数绘图、几何计算和概率统计等多种数学功能。通过引入math.js库,实现了大数运算、GCD/LCM、模逆元、二项分布概率、函数图像绘制以及两点间距离与中点计算等功能,界面简洁美观,支持响应式布局和键盘操作,所有计算均在浏览器端完成,无需后端支持。; 适合人群:具备基本HTML/CSS/JavaScript前端开发能力的学习者或开发者,以及需要轻量级数学计算工具的数学爱好者、学生和教师。; 使用场景及目标:①用于教学演示函数图像、几何关系和概率分布;②辅助学习数论与高等数学概念并进行快速验证;③作为前端工程实践案例,学习如何集成第三方数学库并构建交互式Web应用; 阅读建议:建议结合代码结构逐步理解各功能模块的实现方式,特别是事件绑定、math.js调用及Canvas绘图逻辑,可尝试扩展新功能如积分、矩阵运算等以加深理解和应用。

2025-10-19

前端开发基于HTML5与CSS3的响应式网页模板设计:静态网站结构布局与交互功能实现方案

内容概要:本文提供了一个简洁实用的HTML模板,包含了完整的网页结构,如头部、导航栏、主内容区和页脚。文档采用了标准的HTML5语法,并结合了CSS样式与JavaScript脚本,实现了响应式布局和基本交互功能,例如自动更新版权年份。页面结构清晰,支持移动端适配,同时内嵌了基础样式和可扩展的外部资源链接,便于开发者快速进行二次开发和定制。; 适合人群:具备HTML、CSS和JavaScript基础知识的初学者或前端开发人员,以及需要快速搭建静态网页的技术人员。; 使用场景及目标:①用于学习HTML文档的基本结构与常用标签的应用;②作为静态网站的初始模板,快速构建个人网站或企业展示页面;③理解响应式设计原理及简单的DOM操作实践。; 阅读建议:建议在实际编辑器中打开并运行该代码,结合浏览器开发者工具调试和修改样式与脚本,进一步掌握前端基础技术的集成应用。

2025-10-19

洛谷P1040实现代码

比较清晰的代码,可供参考

2025-10-18

线段树最大子段和实现,单点修改区间查询

这里其实也可以实现非1-n的查询,可自行扩展

2025-10-12

洛谷P1827代码,可参考

可以参考使用,免费

2025-10-12

P1030代码,可供参考

可以借鉴实现

2025-10-12

普通线段树,支持单点修改区间查询,已封装

免费资源,可扩展性较强

2025-10-08

懒标记线段树标准化模板 封装版 可扩展

可扩展性极强的懒标记线段树,封装后可以改装为二维线段树

2025-10-08

线性求逆元模版,非常高效

可以246ms求出三百万个逆元(未优化读入)

2025-10-08

分块源代码,最基础版,支持区间修改单点查询

可扩展性极强的数据结构,异常强大

2025-10-07

DFS求迷宫最短路代码

使用DFS求迷宫的最短路径

2025-10-05

ABC420A-E题目源码

可下载使用

2025-10-02

ABC418A-E题目源码

可下载参考

2025-10-02

SPFA求最短路+判负环

关于SPFA:他死了

2025-09-24

dijikstra单源最短路堆优化模板

使用优先队列加速

2025-09-23

终极版树状数组,可区间修改区间查询

可动态添加功能

2025-09-23

懒标记线段树模板,下载使用

比较简短,可以进行灵活修改,如添加其他功能等,可扩展性较强

2025-09-23

O(n)质数筛欧拉筛代码

最快的筛法,十分高效

2025-09-23

优先队列模板可直接使用

使用STL

2025-09-21

快读快写经典模板,卡常效果极佳

下载即可使用

2025-09-21

倍增实现的归并排序,可经过改装求逆序对

倍增实现的归并排序,可经过改装求逆序对

2025-09-21

二分图的判断,使用DFS

DFS实现二分图判定,可与二分图匹配搭配使用

2025-09-21

二分图匹配dinic网络流版

使用网络流进行普通二分图匹配,效率理论上比匈牙利更高

2025-09-21

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

TA关注的人

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