logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

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++
P14076 [GESP202509 六级] 货物运输

这篇题解解决了一个经典树形DP问题:计算从首都出发遍历所有城市并返回的最短路径,利用贪心策略优化总路程。核心思路是将问题转化为计算树的边权总和两倍减去最长路径(首都到最远城市的距离),从而得到最短总路径。代码实现包括邻接表建图、DFS求最长路径和公式计算三个关键步骤,时间复杂度O(n)。适用于处理大规模树结构数据(n≤1e5),通过优化避免了数据溢出和超时问题。

文章图片
#算法#数据结构#c++ +1
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
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
    共 15 条
  • 1
  • 2
  • 请选择