自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蒟蒻分享算法学习日常

OI赛事金句:顺序开题,正难则反

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

原创 有意思的思维题

题目要求设计一个需要至少40,000步才能解决的"更大推箱子"谜题。该变体中箱子和目标位置都是2×2大小,玩家需要推动箱子到目标位置。通过构造复杂的迷宫形状,迫使玩家绕行极远路径来满足步数要求。最终解决方案提供了一个51×47的迷宫布局,包含重复的路径结构,确保玩家必须执行大量操作才能完成目标。

2025-11-27 19:54:08 667

原创 ICPC赛制蒟蒻第一次Rank1!

一些 2×2 的空地区域各包含一个 2×2 大小的箱子,而一些 2×2 的空地区域各被标记为 2×2 大小的目标位置。玩家位于网格中,可以向上、下、左、右移动到相邻的空地格子,但不能穿过墙壁、箱子或网格边界。如果玩家试图移动到一个箱子的位置,箱子会被向该方向推到相邻的格子。C题真的非常有意思(指想了1.5h+),不过看到大佬们都花了3h+完成的,那作为蒟蒻也平衡了,题干如下,赛时只有6个人做出了,本蒟蒻是第二杀。大小的网格中移动,并将 1×1 大小的箱子推到 1×1 大小的目标位置。

2025-11-27 18:51:20 588

原创 浅谈数论题(1)

数论问题:给定集合中的数字,求两数diff值的最大值。通过数学分析,将问题转化为求互质数对的最大乘积。算法核心是预处理数字出现情况,枚举所有可能的d值,收集其倍数并除以d得到候选集。在候选集中寻找互质数对的最大乘积。采用优化策略:对候选集排序后仅处理前100个最大值,保证时间复杂度为O(m log m + m × K² log m)。实验表明该方法能高效解决问题,适用于大规模数据(n,m≤10^5)。

2025-11-10 14:51:23 828 1

原创 C++竞赛向火车头

前半部分包含大量GCC编译器优化指令,明确标注不得在CSP/NOIP/NOI等竞赛中使用。后半部分提供了竞赛可用的算法实现,包括: Floyd全源最短路算法 Dijkstra单源最短路(基础版与堆优化版) Bellman-Ford负权检测算法 SPFA队列优化最短路算法 代码附带快速读写模板和常用宏定义。需要注意的是,竞赛中需严格遵循官方规定的编码规范。

2025-10-29 13:49:02 651

原创 二叉查找树

二叉查找树(BST)是一种高效的数据结构,具有左小右大的特性,支持查找、插入和删除操作,平均时间复杂度为O(log n)。本文介绍了BST的基本概念、节点定义及初始化方法,详细讲解了插入、查找和删除操作的实现逻辑,其中删除操作需处理三种不同情况。示例代码演示了BST的基本操作,并分析了时间复杂度。最后提到平衡二叉查找树可优化最坏情况性能。

2025-10-24 09:24:24 355 1

原创 线段树+dfn序的应用——P3787 冰精冻西瓜

一棵有根树,每个边有权值w表示冷气传递时的倍数变化。支持两种操作:1) 对节点i释放冷气x,使其子树中所有节点值加上按路径乘积计算后的x值;2) 查询节点i的当前值。解法通过DFS预处理每个节点到根的路径乘积,用线段树维护区间加法和单点查询。修改时将真实值除以路径乘积存入线段树,查询时再乘回。时间复杂度O(nlogn),需注意浮点精度处理。

2025-10-23 22:31:23 871

原创 组合数学c++实例-装修报价

例题:要求计算所有可能的装修报价总和。给定N项费用,系统在相邻数字间随机插入+、-或⊕运算符(优先级:⊕高于+-),要求枚举所有3^(N-1)种运算符组合的结果之和,并对1e9+7取模。关键点在于处理运算符优先级,通过推导发现结果可转化为前缀异或和的线性组合,实现O(N)时间复杂度的解法。示例中N=3时9种组合的和为11。算法核心是递推公式ans=3*ans_prev-sum+(sum⊕x),优化空间至O(1)。(98字)

2025-10-23 20:08:16 1056

原创 分层图(一)

介绍了C++中分层图的概念及其在算法竞赛中的应用。分层图通过构建多层结构,将状态信息融入图中,有效解决带约束的最短路问题。以Luogu P4822题为例,分析了分层图在允许部分边权减半场景下的具体实现方法,并提供了基于链式前向星和Dijkstra的C++代码实现。分层图结合动态规划思想,为复杂图论问题提供了清晰的建模思路,是竞赛选手需要掌握的重要技巧。

2025-10-23 16:33:03 738

原创 Floyd多源最短路

详细介绍了Floyd算法在图论中的应用,这是一种基于动态规划的最短路径算法,适用于处理带负权边的图(不含负权环)。文章阐述了算法核心思想、状态定义和转移方程,并提供了C++实现代码。Floyd算法通过维护距离矩阵,以O(n³)时间复杂度计算所有顶点间最短路径。代码实现包含初始化、动态规划更新和结果输出步骤,适用于洛谷B3647题。该算法因其简单易实现,成为OI竞赛常用模版之一。

2025-10-22 20:36:23 857

原创 单源最短路

介绍了单源最短路问题的两种主要算法:Dijkstra和SPFA。Dijkstra适用于非负权图,采用贪心策略,时间复杂度为O((V+E)logV);SPFA允许负权边,基于动态逼近,平均时间复杂度为O(E)。文章还简要说明了差分约束系统与最短路问题的联系,并提供了两种算法的C++实现代码和对应洛谷模板题。最后给出了算法选择建议,强调Dijkstra的效率优势和SPFA的负权处理能力,同时提醒注意负权环检测等常见陷阱。

2025-10-22 17:19:46 1373

原创 Tarjan

介绍了Tarjan算法求解有向图强连通分量(SCC)的原理与实现。该算法基于DFS遍历,通过维护dfn和low数组记录节点访问顺序和回溯值,利用栈结构识别SCC。当dfn[u]==low[u]时,栈顶到u形成SCC。C++实现展示了邻接表建图、递归DFS和SCC标记过程,时间复杂度为O(V+E)。文中还包含调试技巧和常见错误排查,如正确处理孤立节点、更新low值等。该算法高效解决强连通分量问题,适用于图论相关应用场景。

2025-10-22 16:20:40 1083 1

C++竞赛向火车头(免费下载)

前48行请不要在csp/NOIP/NOI中使用

2025-10-29

空空如也

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

TA关注的人

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