logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

P13016 [GESP202506 六级] 最大因数

本文针对题目P13016提出了一种基于数论的高效解法,避免了传统树算法在处理1e9规模节点时的复杂度问题。核心思路是将节点父节点关系转化为数学问题:每个节点k的父节点为其最大真因数(即k除以最小质因数)。通过双指针模拟最近公共祖先过程,较大节点不断向上跳跃直至相遇,累计步数即为距离。该方法将时间复杂度优化至对数级别,完美适应大规模数据。代码实现简洁高效,结合数论性质和贪心策略,解决了传统算法无法处

文章图片
#算法#数据结构#c++ +1
P11963 [GESP202503 六级] 环线

这篇文章介绍了解决环形数组最大子段和问题的两种方法。第一种方法通过数学推导,将问题分解为求普通数组的最大子段和与总和减去最小子段和两种情况,利用Kadane算法在O(n)时间内同时计算最大和最小子段和,并处理全负数的边界情况。第二种方法采用拆环为链技术,将环形数组扩展为两倍长度的线性数组,结合前缀和与单调队列滑动窗口来寻找最大子段和。两种方法都能高效解决该问题,时间复杂度均为O(n),适用于处理车

文章图片
#算法#数据结构#c++ +2
P11962 [GESP202503 六级] 树上漫步

这篇文章讲解了一道关于树结构的算法题,核心思路是将树视为二分图进行染色处理。题目要求计算每个节点通过偶数步能到达的节点总数。作者通过分析树的特性,发现这等价于统计与当前节点同色的节点数。解题过程包括:构建树的邻接表,使用DFS进行二分图染色(相邻节点颜色不同),统计两种颜色的节点总数,最后直接输出每个节点对应颜色的总数。这种方法将时间复杂度从O(N²)优化到O(N),利用树的二分图性质实现了高效求

文章图片
#算法#数据结构#c++ +1
P11376 [GESP202412 六级] 运送物资

这篇题解介绍了一个关于货车运输路径优化的算法问题。通过数学公式拆解,将总路程分为固定成本和变动成本两部分,其中固定成本与站点位置无关,可以预先计算。变动成本则通过贪心策略优化:将偏向A市的货车分配到坐标较小的站点,偏向B市的货车分配到坐标较大的站点。算法使用双指针技术高效完成站点分配,最终总路程为累加结果的两倍。该方法在O(n+m)时间复杂度内解决问题,适用于大规模数据输入。

文章图片
#算法#数据结构#c++ +1
P11375 [GESP202412 六级] 树上游走

本文介绍了一种解决二叉树模拟中整数溢出问题的方法。通过引入"虚层"机制,在节点编号超过1e12时,不实际计算具体编号,而是记录超出层数。当向上移动时优先减少虚层,确保最终结果在安全范围内。该方法有效避免了传统模拟过程中因指数增长导致的溢出问题,适用于大规模移动指令下的节点跟踪。文章详细解释了代码各模块的功能,并总结了核心逻辑和解决的关键问题。

文章图片
#算法#c++#数据结构 +1
P11247 [GESP202409 六级] 算法学习

这是一道关于算法知识点学习和题目安排的贪心算法题解。核心思路分为两部分:首先对每种算法进行局部贪心,优先选择高分题目以最少题数达到目标掌握程度;然后全局考虑题目排列,避免连续学习同一知识点。当常规方法无法满足间隔条件时,通过借用其他知识点的剩余题目作为隔板,确保学习顺序合法。最终通过比较必做题数、其他题数和剩余题数之间的关系,判断是否存在可行解并计算最小总题数。

文章图片
#算法#学习#c++ +2
P10262 [GESP样题 六级] 亲朋数

本文介绍了如何高效计算数字串中能被给定整数p整除的连续子串(亲朋数)数量。针对大长度数字串(如1e6位),传统暴力枚举法会超时。作者提出利用动态规划结合同余定理的O(L×p)解法:通过滚动数组记录以每个位置结尾的子串余数分布,利用模运算性质(j*10+num)%p进行状态转移。代码实现中,last数组存储上一位置的余数分布,dp数组计算当前位置状态,最后累加各位置余数为0的子串数。该方案避免了直接

文章图片
#算法#动态规划#c++ +2
P10709 [NOISG 2024 Prelim] Party

James 有 n 个朋友,他想选择其中的 0 个或者更多朋友来参加他的聚会。第 i 个朋友如果参加了他的聚会,会产生 ai点快乐值。

文章图片
#算法#c++#数据结构 +1
P11228 [CSP-J 2024] 地图探险

该代码实现了一个机器人路径模拟问题。给定n×m网格地图('.'表示空地,'x'表示障碍)和初始位置(x,y)及方向d,机器人执行k次操作:每次尝试前进,若遇边界或障碍则顺时针转向。使用vis数组记录访问过的位置,最终输出机器人经过的不同格子数。核心算法通过dx/dy数组控制方向移动,当无法前进时更新方向(d=(d+1)%4)。每次移动前检查新位置是否合法且未被访问过,若满足则更新位置并计数。时间复

文章图片
#算法#图论#数据结构 +2
到底了