自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces 思维训练(三)

本文整理了Codeforces平台1000-1100难度区间的思维题,主要考察贪心算法和常见思维模型。通过多个典型题解展示了如何解决这类问题:从处理子序列模数(D.HarderProblem)到打表找规律(B.Digits),从区间操作模拟(B.PaintaStrip)到字符串特性分析(B.ShohagLovesStrings)。文章还涵盖了排列构造(C.Superultra's Favorite Permutation)、二分答案(C.Robin Hood in Town)等技巧,并针对特殊情况(如n=1

2025-08-12 14:41:06 585

原创 Codeforces Round 1042 (Div.3)

本文分享了作者参加Codeforces Div.3比赛的解题过程,分析了A-E五道题目的解题思路。A题通过统计数组差值之和求解迭代次数;B题构造交替数组满足特定条件;C题利用取模运算判断数组转换可能性;D题通过贪心策略最小化树直径;E题运用位运算性质判断数组变换可行性。作者详细记录了每道题的思考路径和代码实现,特别强调了位运算的巧妙应用,展现了算法竞赛中的问题分析与解决能力。

2025-08-11 09:44:26 956

原创 Codeforces 思维训练(二)

本文整理了一些有关codeforces上的一些思维题,目的就是在于锻炼一下思维,提升自己的编码能力以及分析问题的能力。

2025-08-09 10:53:06 1014

原创 Codeforces Round 1041(Div.1 + Div.2)

本文分享了作者参加Codeforces Div.1+Div.2比赛的解题过程。A题通过分析mex、max、min函数的关系,得出当数组不含0且所有元素相等时才能满足条件。B题探讨了哈米德和马尼的最优策略博弈,通过分析左右两侧墙壁位置计算出最小逃脱天数。作者总结指出,这类比赛能暴露算法应用和思维分析能力的不足,需要持续刷题训练来提升。最后强调,无论结果如何,努力的过程本身就有价值。

2025-08-08 11:31:17 855

原创 河南萌新联赛2025第四场-河南大学

本文记录了作者参加河南萌新联赛2025第(四)场的比赛经历和解题过程。作者在比赛中主要解决了G、C、A、J四道签到题,但卡在J题两个多小时,最终发现是少了一个等于号导致错误。文章详细介绍了每道题的解题思路和优化过程,包括G题的暴力解法、C题的前后缀处理、A题的枚举优化以及J题的贪心特判。通过这次比赛,作者深刻体会到了ACM竞赛的魅力与挑战,也积累了宝贵的解题经验。文章最后还预告了后续要补的题目,展现了作者持续学习的态度。

2025-08-06 19:30:33 1096

原创 Codeforces 思维训练

本文记录了作者在Codeforces平台上刷1000-1100难度思维题的经历,涵盖了10道不同题目的解题思路和代码实现。这些题目主要涉及贪心算法、数学推导、字符串处理等技巧,考察逻辑思维和问题分析能力。作者通过具体案例分享了如何解决数组操作、字符串构造、游戏策略等问题,并总结了每道题的关键点和注意事项。文章最后反思当前水平仍有不足,解决这类题目平均耗时20-30分钟,距离XCPC竞赛要求还有差距,需要继续加强训练。

2025-08-06 11:51:08 1097

原创 背包九讲:动态规划经典问题全解析(二)

本文总结了背包问题的三种进阶题型:有依赖的背包、求方案数和求具体方案。有依赖的背包通过树形DP实现,将每个节点视为分组背包模型;背包方案数问题在01背包基础上增加方案数统计,需考虑最优解相等时的累加;具体方案求解则通过逆向遍历或记录状态转移路径来获取字典序最小的选择方案。文章提供了三种题型的代码实现模板,强调这些基础模板在实际竞赛中需要灵活运用。

2025-08-05 11:33:16 1033

原创 背包九讲:动态规划经典问题全解析(一)

本文介绍了动态规划中的经典背包问题,重点讲解了"背包九讲"中的前六种类型:01背包、完全背包、多重背包、混合背包、二维费用背包和分组背包。针对每种背包问题,文章详细说明了其特点、状态转移方程和实现方法,并配有相应的例题代码。其中,01背包需要逆序遍历容量防止重复选取;完全背包可正序遍历允许重复;多重背包有三种优化解法;混合背包需分类处理;二维费用背包增加一维状态;分组背包需确保每组只选一个物品。文章还特别强调了不同背包问题的遍历顺序差异及原因。

2025-08-04 18:22:51 803

原创 数论:卢卡斯定理

本文介绍了三种计算组合数C(n,k)模质数p的方法:1) 递推法(O(n²)),适用于小数据范围;2) 阶乘+逆元法(O(n)),利用费马小定理快速计算逆元;3) 卢卡斯定理,适用于超大n和k但p较小的情况。文章还提供了常用数论模板,包括素数判断、质因数分解、筛法、约数求解等,并通过容斥原理实例展示了如何统计区间内与特定质数互质的数字个数。这些方法覆盖了算法竞赛中组合数计算的主要需求。

2025-08-01 19:39:44 894

原创 Codeforces Round 1040 (Div.2)

codeforces round (1040)

2025-08-01 11:12:48 1113

原创 图论:SPFA算法

本文介绍了SPFA算法(Bellman-Ford队列优化算法)及其应用。SPFA通过队列优化减少了Bellman-Ford算法的冗余操作,仅对需要松弛的边进行处理。文章给出了城市间货物运输问题的SPFA解法代码示例,使用邻接表存图,并通过标记数组和队列优化松弛操作。最后提供了完整的SPFA算法模板,包含初始化、建图、核心算法流程和结果输出,适用于求解带权图中的单源最短路径问题,特别适合XCPC竞赛选手参考使用。

2025-07-31 16:18:35 1023

原创 河南萌新联赛2025第三场-河南理工大学

本次萌新联赛题目难度适中,包含多道典型算法题解。主要包括: 连续合规子串:字符串遍历找最长合规子串,注意边界处理 魔法音符:单调栈应用,类似力扣接雨水问题 上海保卫战:数学思维题,分奇偶和质数情况讨论 星际争霸:排序+前缀和+二分查找优化查询 方案数:组合数学+快速幂求逆元 检讨:二分答案+前缀和检查 博弈:前缀和+奇数个数规律分析 其中多道题目使用前缀和、二分等常见优化技巧,并包含数学推导和思维转换。比赛过程中需注意榜单策略,合理分配时间。

2025-07-31 11:52:45 1127 3

原创 图论:Bellman_ford算法

本文介绍了两种求解单源最短路径的算法:Dijkstra算法和Bellman-Ford算法。Dijkstra算法仅适用于非负边权图,时间复杂度较低(优化后为O((n+m)logn)),采用贪心策略;而Bellman-Ford算法可处理含负边权(无负环)的图,时间复杂度较高(O(n×m)),基于动态规划思想,通过多轮松弛操作求解。文章详细比较了两者的区别,并提供了Bellman-Ford算法的实现模板,包括初始化、松弛操作和负环检测等步骤,适用于算法竞赛中处理负边权和检测负环的场景。

2025-07-29 12:10:33 965

原创 常用算法思想及模板

本文整理了算法竞赛中C++常用模板与解题思路,主要包括:1. 保留小数位数的cout格式化方法;2. 贪心算法在排队接水问题中的应用;3. 最长上升子序列的正反双向解法;4. 归并排序在逆序对问题中的高效应用;5. 高精度快速幂计算麦森数;6. 倍增法求LCA模板;7. 结合单调栈和倍增法的喷泉问题解法。文章通过具体例题展示了这些算法的实现细节,可作为算法竞赛的实用参考模板。

2025-07-29 10:26:55 1133

原创 Codeforces Round 1039(Div.2)

文章摘要:分享了A、B、C三题的解题思路:A题采用贪心算法处理排序后的小于等于k的元素;B题用双指针模拟LR操作避免连续四个单调元素;C题通过分析元素递增关系判断是否能通过特定操作得到目标数组。作者认识到自身不足,决心加强练习。

2025-07-28 11:16:14 1373

原创 图论:Dijkstra算法

本文介绍了Dijkstra算法及其两种实现方式,用于求解有向有权图中单源最短路径问题。朴素版采用邻接矩阵存储,时间复杂度O(n²),适合稠密图;堆优化版使用邻接表和小顶堆,复杂度O(mlogn),适合稀疏图。文章通过例题展示了算法应用,强调避免负权边和重复访问节点的注意事项,并提供了完整代码模板。Dijkstra算法通过贪心策略逐步确定各节点到起点的最短距离,是图论中的经典算法。

2025-07-26 18:00:46 869

原创 图论:最小生成树

本文介绍了两种最小生成树算法:Prim算法和Kruskal算法。Prim算法采用贪心策略,从节点角度构建最小生成树,通过维护节点到树的距离实现优化,适用于稠密图,时间复杂度为O(V²)或O(ElogV)。Kruskal算法通过边构建最小生成树,使用并查集判断连通性,按边权排序后逐步选择边,适用于稀疏图,时间复杂度为O(ElogE)。文章详细分析了两种算法的实现步骤、模板代码(包括邻接矩阵和邻接表版本)以及适用场景,并通过寻宝问题展示了具体应用。两种算法各有优势,应根据图的稠密程度选择合适的实现方式。

2025-07-25 19:05:16 1552

原创 图论:并查集

本文介绍了并查集(Disjoint Set Union)这一数据结构及其应用。并查集主要用于处理不相交集合的合并与查询问题,核心功能包括:1)合并两个集合;2)判断两个元素是否属于同一集合。文章详细讲解了并查集的实现方法,包括路径压缩优化、初始化操作、查找函数(find)、合并函数(join)和判断函数(is_same)。通过三道例题(寻找存在的路径、冗余的边、冗余的边II)展示了并查集的实际应用,并分析了不同情况下的处理策略。特别强调了并查集在判断连通性和检测环时的重要作用,为后续学习其他算法如Dijks

2025-07-25 13:22:40 1196 1

原创 图论:搜索问题

本文介绍了图论中常见的DFS和BFS搜索算法及其应用,重点讲解了岛屿问题的多种变体及解法。主要内容包括:1)孤岛面积计算,通过边界DFS消除非孤岛后统计剩余陆地;2)沉没孤岛问题,标记非孤岛后输出;3)水流问题,采用逆向双边界搜索;4)最大岛屿建造,通过编号和面积映射优化计算;5)岛屿周长统计,通过边界判断实现;6)字符串接龙问题,使用BFS构建转换图;7)有向图连通性检查。文章提供了详细的算法思路和C++代码实现,涵盖了图论搜索的典型应用场景。

2025-07-24 19:27:24 1033

原创 河南萌新联赛2025第二场-河南农业大学

本文总结了萌新联赛第二场的解题情况。K题是签到题,直接输出指定字符串;I题采用二分法和log2函数解决猜数游戏;M题通过数学推导和勾股定理计算阴影面积。重点讲解了A题的整除分块算法,通过分组优化计算约数个数。D题则运用树结构和位运算处理网络连接方案。作者反思比赛中因知识面不足导致部分题目卡壳,强调需要继续沉淀学习。

2025-07-23 20:20:18 810

原创 Codeforces Round 181(Div 2)

昨晚被迫打了场Div2难度的CF比赛,A题找字符串中的"FFT"和"NTT"让我卡了很久,最终通过把T字符全部提前解决。B题需要找到使(a,b)变为(0,0)的最小操作次数,使用GCD化简后与k比较得出答案。C题考察数论中的容斥原理,计算质因数分解不含一位数的数字个数。虽然前两题还算顺利,但第三题的规律复杂度让我罚坐到凌晨。比赛体验证明即使是Div2的前两题也需要一定思维量。(149字)

2025-07-23 10:16:40 1015 2

原创 基础算法思想(递归篇)

本文介绍了递归算法在编程竞赛中的应用,通过多个题目展示了递归思想的实现方式。主要内容包括:1)全排列问题的递归回溯解法;2)双核处理任务的递归搜索;3)组合问题的递归枚举;4)木棒拼接问题的优化思路;5)幂次方表达式的递归分解;6)分形图形的递归绘制;7)复合字符串的递归解析。文章强调递归是搜索、动态规划等算法的基础,并详细讲解了如何通过递归遍历所有可能情况,以及回溯时状态还原的重要性。每个题目都提供了完整的C++代码实现。

2025-07-22 19:02:39 891

原创 DFS 暴力也能用在算法竞赛

深度优先搜索(DFS)是一种系统性穷举所有可能性的算法技术,适用于排列组合、路径查找和树形结构问题。文章通过两个典型例题展示了DFS的应用: 单词接龙:通过递归回溯实现单词拼接,维护当前字符串状态,使用次数限制剪枝,最终求得最长接龙长度。核心在于每次DFS时更新最大值,并对符合条件的单词进行拼接尝试。 产生数:将问题转化为数字变换的连通性计算,使用DFS统计每位数字的可能变换数,通过高精度乘法累乘结果。特别处理了间接变换的情况(如2→5→1),并利用标记数组避免重复计算。 两题均体现了DFS的四步法:定义状

2025-07-21 19:36:34 697

原创 Codeforces Round 1037(Div.3)

文章摘要:本文记录了Codeforces Div.3比赛的解题思路和代码实现。A题通过字符串处理快速找到数位最大值;B题模拟数组遍历,维护计数器num;C题分析塔楼传送与水位上升的相对关系;D题通过自定义排序更新金币数量;E题通过GCD和LCM验证数组构造的合理性。每道题都提供了赛时代码和详细解题分析,展现了对基础算法和思维题的掌握。

2025-07-19 16:30:37 1232

原创 线性DP基础模板

本文总结了线性动态规划(DP)的常见模板与应用。重点介绍了最长上升子序列的O(NlogN)优化解法,通过二分查找维护dp数组。随后依次讲解了最长连续上升子序列、最长重复子数组、最长公共子序列等经典问题的解法模板。文章还涵盖了几个衍生问题,包括不相交的线、判断子序列、不同子序列计数等。最后详细解析了两个字符串的删除操作和编辑距离问题,通过状态转移方程展示了增删改操作的统一处理方式。这些模板对ICPC/CCPC等算法竞赛中的线性DP问题具有重要参考价值。

2025-07-19 10:56:21 598

原创 二叉树(建立 + 遍历 + 拓展)

本文分享了二叉树入门学习的心得,重点介绍了二叉树的构建、三种DFS遍历方式(前序、中序、后序)以及实际应用。通过4道洛谷题目(P4913、B3642、P1305、P3884)的代码解析,展示了如何求二叉树深度、实现不同遍历方式、处理字符二叉树以及计算节点间距离。特别强调了用后序遍历求最近共同祖先的技巧,并提供了通过父节点数组存储法优化查找的思路。文章以具体代码示例帮助理解二叉树的基本操作和递归思想。

2025-07-18 15:45:07 953

原创 河南萌新联赛2025第一场-河南工业大学

本文摘要:这是一组编程竞赛题解,包含多个算法问题及其解决方案。L题通过简单修改数组元素实现要求;C题通过数学公式直接计算结果;H题模拟蛇形矩阵填充;I题通过分析二进制字符串首尾字符判断结果;G题使用两种方法解决最大两段子段和问题;M题暴力枚举验证子序列条件;B题采用优先队列实现代价转移;A题运用斯特林数和阶乘计算排列组合。这些题目涵盖了基础编程、数学推导、动态规划和组合数学等知识点,展示了多种算法思维和解题技巧。

2025-07-17 19:15:36 1309

原创 string + 栈 & bitset & 可达性统计(拓扑排序)

本文总结了栈、bitset和拓扑排序的算法应用。通过"最优屏障"和"吐泡泡"两道例题展示了单调栈在处理元素匹配问题中的优势。介绍了bitset的常用操作,包括二进制转换和位运算,并通过"小红组比赛"、"简单瞎搞题"和"起床困难综合征"等题目演示了bitset在状态压缩和位运算优化中的应用。最后详细讲解了拓扑排序算法,通过"视频讲解"和"可达性统计"两道例题展示了如何利用

2025-07-17 15:21:33 1433

原创 完全背包-初识dp的美

本文总结了完全背包问题的动态规划解法。完全背包与01背包的区别在于物品可重复选取。解题关键在于确定循环顺序:若需要考虑元素排列顺序,则外层循环遍历目标值;若不需考虑顺序,则外层遍历物品。内层循环均需正序,以支持多次选取。通过状态转移方程(如dp[i]=min(dp[i],dp[i-w]+1))递推最优解。文章以单词拆分、完全平方数、零钱兑换等例题,展示了外层循环顺序对解法的影响,并强调完全背包内层必须正序遍历才能正确处理物品重复选取。

2025-07-15 16:41:09 819

原创 优先队列&赛后补题

本文比较了优先队列和集合(set)的使用场景,分析了两者的异同点。优先队列适用于需要频繁插入并自动排序但无需查找元素的场景,而set适合需要快速查找的有序集合。文章详细讲解了优先队列的实现原理(二叉堆)和两种类型(大根堆/小根堆),并通过动态中位数问题展示了对顶堆的应用。此外,还分享了Codeforces和牛客竞赛的解题思路,包括双指针技巧、滑动窗口优化等算法在具体问题中的应用,如处理循环移位数组的统计问题。最后通过预处理和逆向遍历等技巧优化了算法效率。

2025-07-14 15:13:48 721

原创 单调栈&单调队列【算法进阶】

本文总结了单调栈和单调队列的应用与实现。单调栈适用于寻找元素左右第一个大于/小于它的元素,如柱状图最大矩形问题;单调队列优化滑动窗口可用于求子数组极值问题。文章详细讲解了LeetCode 84、85、862等典型题目的解法,并提供了代码实现。通过预处理和单调性维护,这两种算法能将时间复杂度优化至O(N)。最后对比了两种滑动窗口的实现方式:双端队列适用于满足条件的子数组区间,单调队列则用于维护元素前的最值。

2025-07-12 10:42:23 779

原创 Set & 二分 -> 剑指算法竞赛

本文主要介绍了C++ STL中的集合容器set及其相关操作,以及二分查找算法的应用。set分为有序(set/multiset)和无序(unordered_set/unordered_multiset)两种,具有自动排序、去重等特点。文章详细讲解了set的定义、遍历和常见操作(插入、删除、查找等)。在二分算法部分,介绍了二分查找的前提条件、标准库函数(lower_bound/upper_bound)的使用场景,以及整数二分和浮点二分的模板实现。通过"进击的奶牛"和"切绳子&quo

2025-07-11 17:47:48 645 1

原创 Map容器&用map优化程序

本文总结了map的基础知识和操作,包括map的定义、增删改查、元素访问和遍历方法。通过5道编程题目练习了map的实际应用:1)同构字符串验证;2)字母解码;3)完美K倍子数组;4)和为K的子数组;5)叫号系统实现。重点讲解了map的两种遍历方式(迭代器遍历和快速遍历)以及注意事项,如自动排序特性导致的时间消耗问题、正确使用迭代器访问元素等。摘要概括了map的核心用法和典型应用场景,帮助快速回顾map的基本操作和解题思路。

2025-07-10 14:48:56 823

原创 位运算、丑数

记录在找到第一个比他小的元素之前的位置。

2025-07-09 16:15:53 923 1

原创 单调栈(详解)

本文总结了单调栈的基本概念和应用。单调栈分为单调递增栈和单调递减栈,主要用于求解数组中元素右边或左边第一个大于/小于当前元素的值。文章通过多个例题展示了单调栈的具体应用,包括处理温度变化、计算雨水容量等场景,并提供了对应的代码实现。同时强调了单调栈的核心思想:在维护栈的单调性过程中,及时弹出无用元素,利用栈顶元素解决问题。最后指出需要通过大量练习来掌握这一数据结构,建议养成总结习惯以提高理解。

2025-07-08 14:42:27 776 1

原创 单调队列&双端队列

本文系统讲解了双端队列和单调队列的原理与应用。首先介绍了双端队列的基本操作(push_front/pop_front/push_back/pop_back)及其特点——支持两端操作。重点剖析了单调队列的核心思想:通过维护队列的单调性(递增/递减)来高效解决滑动窗口最值问题,时间复杂度O(N)。通过洛谷P1886滑动窗口模板题,详细演示了如何用数组模拟单调队列来求窗口最值,并给出了AC代码。此外,还介绍了单调队列在切蛋糕、逛画展、质量检测等题目中的典型应用,对比分析了存索引和存值两种实现方式的差异。最后总结了

2025-07-07 14:30:33 662 2

原创 2025东北CCPC(部分+详解)

【代码】2025东北CCPC(部分+详解)

2025-05-28 17:20:07 457

原创 2025吉林CCPC 题解(前六题)

【代码】2025吉林CCPC 题解(前六题)

2025-05-27 16:54:23 564

原创 2025河北CCPC 题解(部分)

【代码】2025河北CCPC 题解(部分)

2025-05-26 18:37:13 540

原创 2022河南CCPC(前四题)

【代码】2022河南CCPC(前四题)

2025-05-17 15:43:26 461

空空如也

空空如也

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

TA关注的人

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