洛谷题解
文章平均质量分 57
adminh_miao
一个喜欢编程的蒟蒻
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
浅谈字符串算法及练习题
本文介绍了四种字符串处理技术:哈希、字典树、Manacher和KMP算法。哈希通过固定转换将字符串映射为唯一值,用于快速检索;字典树以空间换时间,高效处理字符串前缀;Manacher算法利用动态规划寻找最长回文子串;KMP通过next数组优化字符串匹配。文章还提供了相关练习题及代码实现,如利用哈希统计子串、使用KMP求重复子串的最小长度等。最后作者幽默吐槽"我讨厌哈希",但全文内容详实,涵盖算法原理、代码实现和应用场景。原创 2026-07-23 19:26:41 · 193 阅读 · 0 评论 -
数位dp算法解析
本文介绍了数位DP算法的核心思想与实现模板,通过记忆化搜索方式解决大范围数字统计问题。文章提供了通用模板代码,并展示了6道典型例题的解题思路和关键代码片段(包括数字计数、二进制问题、手机号码校验等),重点讲解了如何处理前导零、数位限制、特殊约束条件等问题。作者还特别强调了全局记忆化的重要性,并通过具体例题(如CF55D)演示了如何优化处理最小公倍数等复杂约束条件,体现了数位DP在处理大范围数字统计问题上的高效性和灵活性。原创 2026-07-02 20:09:24 · 200 阅读 · 0 评论 -
数列分块入门&莫队模板详解
本文介绍了数列分块和莫队算法两种基于分块思想的数据处理方法。数列分块通过将数列划分为若干块,对完整块整体处理、非完整块暴力处理,实现了高效的区间操作,时间复杂度为O(n√n)。文章详细讲解了分块的基本思想、实现步骤和代码模板,并提供了多个数列分块的应用实例,包括区间加减、查询、模运算、开平方等操作。莫队算法则利用分块思想对查询离线排序,通过逐步调整区间边界来高效处理区间查询问题。文章还介绍了分块重构技巧和带标记的分块处理方法。这些方法为解决大规模数据操作问题提供了有效方案,在保证时间效率的同时简化了实现难度原创 2026-06-12 16:55:23 · 68 阅读 · 0 评论 -
C++基础数论
本文介绍了数论中求逆元的五种方法:费马小定理(适用于模数为质数)、拓展欧几里得算法(通用解法)、顺推法(求连续数的逆元)、逆推法(通过阶乘求逆元)以及前后缀乘积法(结合快速幂)。此外还讲解了整除性质、欧拉函数及其反演、同余定理(欧拉定理和费马小定理)以及中国剩余定理的原理与应用。文章通过推导公式和代码示例,系统总结了数论基础知识,适合初学者系统学习数论内容。原创 2026-05-22 22:15:02 · 96 阅读 · 0 评论 -
连通性问题及练习题详解(未完工)
本文系统讲解了图论中的强连通分量、缩点、割点/割边、点双/边双连通分量等概念及其算法实现。主要内容包括: Tarjan算法求强连通分量(SCC)的模板代码实现 缩点技术的应用场景和实现方法 割点与割边的判定条件和算法实现 点双和边双连通分量的求解方法 典型例题分析(如P2746、P2431等)展示了这些算法在实际问题中的应用 文章结合代码示例详细说明了各算法的实现细节,并提供了多个练习题供读者实践。这些内容为处理有向图和无向图中的连通性问题提供了系统的方法论和实用工具。原创 2026-04-28 21:06:49 · 91 阅读 · 0 评论 -
拓扑排序详解
本文介绍了拓扑排序的基本原理和应用。通过图示说明拓扑排序的核心思想是每次遍历入度为0的节点,逐步处理整个有向无环图。文章提供了拓扑排序的模板代码实现,并举例说明如何应用于实际问题如P4017最大食物链计数。该问题通过拓扑排序结合动态规划求解,转移方程为dp[y]=(dp[y]+dp[x])%mod,最终累加所有出度为0的节点得到答案。作者强调拓扑排序是算法中较为简单但实用的内容,适合作为入门学习。原创 2026-04-19 16:29:28 · 53 阅读 · 0 评论 -
树上问题详解
本文总结了树形结构相关算法题的解题思路,包括树的直径、树的重心和带权树重心三个经典问题。对于树的直径,介绍了两次DFS/BFS法和动态规划法;对于树的重心,讲解了通过遍历子树判断最大连通分量的方法;对于带权树重心,提出了换根DP的解决方案。每种方法都配有核心代码片段,并强调了排序去重等细节处理。文章以简洁幽默的风格呈现了树形问题的解题技巧,适合算法学习者快速掌握相关知识点。原创 2026-04-12 20:33:26 · 201 阅读 · 0 评论 -
线段树详解及练习
本文更新线段树及题目解法喵~原创 2026-04-04 15:25:04 · 267 阅读 · 0 评论 -
树状数组及练习题解析
本文介绍了树状数组的原理和应用。通过图示解释了树状数组的管理区间机制,详细讲解了区间增减和区间查询的实现方法(使用lowbit运算和差分技巧)。提供了两个模板题的解法(P3374和P3368),并给出逆序对问题(P1908)和三元上升子序列问题(P1637)的树状数组解法,其中涉及离散化处理。文章以简洁的代码示例展示了树状数组在解决统计问题中的高效性,适合算法初学者学习。原创 2026-03-30 22:00:01 · 365 阅读 · 0 评论 -
树形dp以及练习题洛谷P2052、P15801、P14919、P1352、P2016、P1122、P3478、P2014、P4084、P2458题解
本文介绍了树形动态规划(树形DP)的基本概念和解题方法。首先概述了DP的三个特征(最优子结构、重叠子问题、无后效性)和五个步骤。然后详细讲解了树形DP的实现方法,包括树的存储方式(邻接表、链式前向星)和遍历方式(前序、中序、后序遍历)。文章通过8道典型题目(P2052、P15801、P2016、P1122、P1352、P14919、P3478、P2014、P4084、P2458)展示了树形DP的应用,每道题都包含题意解析、解题思路和完整代码实现。这些题目涵盖了树形DP的常见类型,如子树统计、节点选择、路径覆原创 2026-03-22 17:14:14 · 104 阅读 · 0 评论 -
洛谷P14923、P11967、P10289、P10725、P13019、P13020、P10726、P10264、P14924题解
本文整理了9道8级编程题解,主要涉及图论和树形结构算法。内容包括:1) 无向图安全节点判断(Dijkstra应用);2) 树形差分处理点对连通性;3) 带传送门的LCA最短路径;4) 树形DP求异色节点最远距离;5) 倍增法处理树上移动;6) 树遍历序列计数;7) 挡板掉落时间计算;8) 卡牌消除的倍增优化;9) 环形宝石分段的倍增解法。所有题目均给出核心思路和完整代码,涵盖Dijkstra、树形DP、LCA、倍增等典型算法,适合8级考试复习参考。原创 2026-03-07 18:59:56 · 153 阅读 · 0 评论 -
洛谷P2330题解
题目要求将n个节点通过m条边连通,满足:1) 形成连通图;2) 使用最少边数;3) 最大边权最小。这实质是求最小生成树问题。使用Kruskal算法,按边权排序后依次选择边进行合并,直到形成包含n-1条边的树。最终输出选用的边数n-1和其中最大边权值。时间复杂度主要由排序决定,为O(mlogm)。代码实现了并查集优化的Kruskal算法,简洁高效地解决了该问题。原创 2026-03-07 09:37:53 · 37 阅读 · 0 评论 -
洛谷P1550题解
摘要:题目要求连接n块田地,每块田地i和j连接需要p[i][j]元,或在i处打井需要w[i]元。通过将打井视为与虚拟水源(n+1)连接,将问题转化为包含n+1个点的最小生成树问题。使用Kruskal算法,将所有边(包括田地间连接边和打井边)排序后,按权值从小到大选择边,使用并查集维护连通性,直到所有点连通。最终输出最小总费用。原创 2026-03-06 19:00:44 · 12687 阅读 · 0 评论 -
洛谷P12158题解
摘要:题目要求连接n个圆形区域,若两圆重叠则自然连通,否则需要建造道路。解题思路是计算所有圆对之间的最短连接距离(圆心距离减去半径和,若为负则取0),然后用Kruskal算法求最小生成树。最终输出使所有圆连通所需的最少道路总长度,保留两位小数。代码实现了距离计算、并查集和Kruskal算法来求解该问题。原创 2026-03-05 21:42:28 · 164 阅读 · 0 评论 -
洛谷P2121题解
摘要:题目要求在n个点和m条边的无向图中,最多保留k条边且无环的情况下,使边权总和最大。解法采用Kruskal算法变种,将边按权值降序排序后构建最大生成树,当选取k条边时终止。代码使用并查集实现连通性检查,时间复杂度主要由排序决定。最终输出选取的k条边的最大权值和。原创 2026-03-03 19:28:37 · 253 阅读 · 0 评论 -
洛谷P1194题解
摘要:题目要求在购买b件物品时,每件基础价格a元,同时存在优惠关系k[i][j]。解法是将每个物品与虚拟节点0相连(权值a),并建立优惠边,使用Kruskal算法求最小生成树。代码实现了并查集优化,初始化后排序边,累计最小花费。最终输出总花费即为最优解。原创 2026-03-02 18:29:56 · 157 阅读 · 0 评论 -
洛谷P1396 题解
摘要:题目要求在n个点m条边的图中,找到从s到t的最短路径中的最大边权。解题思路是使用Kruskal算法构建最小生成树,当s和t首次连通时,当前处理的边权即为所求最大值。代码实现包括:初始化并查集、按边权排序、逐步合并连通分量,当检测到s和t连通时立即输出当前边权并结束程序。该方法巧妙地利用最小生成树性质解决了最短路中的最大权值问题。原创 2026-03-01 10:45:30 · 332 阅读 · 0 评论 -
洛谷P2419题解
摘要:该算法使用Floyd算法确定奶牛之间的相对排名关系。通过构建关系矩阵并进行传递闭包运算,能够判断任意两头奶牛之间的先后顺序。最后统计每头奶牛能否确定与其他所有奶牛的关系,从而得出可确定排名的奶牛数量。算法时间复杂度为O(n^3),适用于解决奶牛排名问题。原创 2026-02-26 10:03:06 · 292 阅读 · 0 评论 -
bitset优化Floyd(洛谷P4306)
本文介绍了一种使用bitset优化Floyd算法的方法。通过将邻接矩阵转换为bitset表示,可以高效计算图的传递闭包。核心思路是枚举中间点k和起点i,若i可达k,则将i的可达集合与k的可达集合进行或运算。这种方法显著降低了时间复杂度,使O(n^3)的Floyd算法得到优化。代码示例展示了如何使用bitset实现该算法,并统计所有可达节点对的数量。bitset的位运算特性使其成为处理大规模图的高效工具。原创 2026-02-21 11:45:22 · 41 阅读 · 0 评论
分享