logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

P10265 [GESP样题 七级] 迷宫统计

本文解析了邻接矩阵统计迷宫连通性的算法题。通过边读边处理的方式,避免存储整个矩阵,空间复杂度优化至O(1)。核心思路是:遍历矩阵时,统计第m行(出度cntG)和第m列(入度cntC)中1的个数,包含自身连通的情况。最终输出出度、入度及其总和。该解法通过IO加速和空间优化,高效处理了n=1000的大规模数据。文章强调行列区分的重要性,并指出对角线元素的双重统计符合题目要求,无需去重。

文章图片
#算法#c++#数据结构 +1
P1540 [NOIP 2010 提高组] 机器翻译

本文解析了一道经典的队列模拟问题,要求实现内存单词管理机制。使用队列(queue)维护内存中的单词顺序(FIFO原则),配合布尔数组标记单词是否在内存中。算法遍历文章单词,若单词不在内存则查词典计数,并将其加入队列;当内存满时移除队首单词并更新标记。该方案高效模拟了操作系统的缓存淘汰机制,时间复杂度O(N),空间复杂度O(M)。代码通过队列和标记数组的协同工作,完美解决了内存容量限制下的单词管理问

文章图片
#算法#数据结构#c++
P15801 [GESP202603 六级] 完全二叉树

这篇文章介绍了一个统计二叉树中完全二叉树子树数量的算法。核心思路是通过后序遍历自底向上计算每个子树的状态,包括是否为满二叉树、是否为完全二叉树以及子树深度。对于每个节点,根据其左右子树的三种可能情况进行状态转移判断。该算法巧妙地将空节点视为深度0的满二叉树作为递归边界条件,利用动态规划思想高效地统计满足条件的子树数量,时间复杂度为O(n)。文章详细解析了代码实现和三种情况的状态转移逻辑,并强调了满

文章图片
#算法#数据结构#c++ +1
P15800 [GESP202603 六级] 选数

这篇文章介绍了一个解决动态规划问题的算法,题目要求在给定两个数组a和b的条件下,选择一组下标使得满足特定跳跃约束,并使得对应a数组元素之和最大。 核心解题思路: 使用动态规划(刷表法),定义f[i]表示处理到第i个位置时的最大分数。 每个位置i有两种选择: 选择i:将a[i]加入总分,并更新i+b[i]位置的状态 不选i:将当前分数传递给i+1位置 同时维护全局最大值ans 关键点: 使用long

文章图片
#算法#数据结构#c++ +1
P14920 [GESP202512 六级] 道具商店

这篇文章介绍了一个01背包问题的变种解法,用于在金币预算限制下最大化攻击力。通过逆向思维,将攻击力作为背包容量而非金币,解决了传统方法因金币数量过大导致的高复杂度问题。文章详细解析了代码各模块的作用,包括输入处理、动态规划数组初始化、状态转移以及最终答案提取。该解法巧妙利用了题目中攻击力数值较小的特点,将时间复杂度优化至O(n×Σa_i),适用于大规模金币预算的场景。核心在于交换代价与价值的概念,

文章图片
#算法#数据结构#c++
P14075 [GESP202509 六级] 划分字符串

文章摘要: 题目要求将给定字符串划分为若干无重复字符的子串,使得各子串价值之和最大。采用动态规划解法,定义dp[i]为前i个字符的最大价值。核心优化在于利用vis数组标记字符出现情况,遇到重复字符立即剪枝,将内层循环限制为26次,使复杂度从O(N²)降为O(26N)。最终输出dp[n]即为答案,注意使用long long防止溢出。该算法高效处理1e5规模数据,结合IO优化确保性能。

文章图片
#算法#数据结构#c++ +1
P13016 [GESP202506 六级] 最大因数

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

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

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

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

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

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

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

文章图片
#算法#c++#数据结构 +1
    共 14 条
  • 1
  • 2
  • 请选择