<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u011322421的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u011322421</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u011322421]]></copyright><item><title><![CDATA[KMP算法完整匹配过程详解]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/156326978</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/156326978</guid><author>u011322421</author><pubDate>Sat, 27 Dec 2025 09:36:18 +0800</pubDate><description><![CDATA[KMP算法通过预处理模式串生成next数组，记录部分匹配信息以优化字符串匹配过程。示例展示了模式串&quot;ababc&quot;的next数组计算和完整匹配步骤：当主串&quot;abababc&quot;与模式串匹配失败时，利用next值跳转而非从头比较，最终在位置3成功匹配。该算法通过避免主串指针回退，将时间复杂度优化为O(m+n)，显著优于暴力匹配的O(mn)。关键点在于next数组存储最长公共前后缀长度，实现匹配失败时的智能跳转。]]></description><category></category></item><item><title><![CDATA[技术成长与博客创作：我的2024年度复盘与展望]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/156326274</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/156326274</guid><author>u011322421</author><pubDate>Sat, 27 Dec 2025 09:12:07 +0800</pubDate><description><![CDATA[《技术人的博客成长之路：2024复盘与展望》总结了我通过技术博客实现的双重成长。2024年，我深入React 18、Vue 3、云原生等前沿技术，并将30余篇实战经验转化为技术文章，其中多篇获得广泛认可。写作不仅深化了我的技术理解，还带来了行业连接和职业机会。通过项目即时记录、主题聚焦等策略，我平衡了技术钻研与内容创作。展望2025，计划深耕WebAssembly、AI编程等方向，并启动多模态技术内容创作。博客已成为我技术生涯的重要组成部分，既是思考沉淀，也是连接行业的桥梁。]]></description><category></category></item><item><title><![CDATA[P1120 小木棍题解]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/152726628</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/152726628</guid><author>u011322421</author><pubDate>Wed, 08 Oct 2025 16:33:18 +0800</pubDate><description><![CDATA[题目要求将给定的小木棍拼接成若干根长度相等的原始木棍，找出原始木棍的最小可能长度。通过深度优先搜索（DFS）结合剪枝策略来解决。 方法思路 问题分析：将分割后的小木棍重新拼接成若干根等长的原始木棍，要求原始长度尽可能小。原始长度必须能整除总长度且不小于最长的小木棍。 DFS搜索：从可能的最小长度（最长小木棍）到最大长度（总长度）进行尝试，用DFS验证能否拼接成功。 剪枝策略： 降序排序：优先处理长木棍以减少搜索空间。 跳过重复长度：避免重复计算相同长度的木棍。 首尾剪枝：若当前木棍无法作为第一根或最后一根，]]></description><category></category></item><item><title><![CDATA[CSP-S选手学习斜率优化详解]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/152725943</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/152725943</guid><author>u011322421</author><pubDate>Wed, 08 Oct 2025 16:03:47 +0800</pubDate><description><![CDATA[斜率优化摘要 斜率优化是一种用于优化动态规划的高效算法技术，适用于特定形式的递推式。其核心思想是将动态规划问题转化为凸包维护问题，通过分析斜率关系来优化决策过程。本文详细介绍了斜率优化的基本原理、适用场景和实现方法，并提供了三个经典例题的完整代码实现。 主要内容包括： 斜率优化的数学推导过程 凸包维护的基本原理 三个典型问题的实现： 任务安排问题 打印文章问题(HDU 3507) 玩具装箱问题(P3195) 通用模板框架 通过将状态表示为平面上的点并维护下凸包，斜率优化能将时间复杂度从O(n²)降低到O(n]]></description><category></category></item><item><title><![CDATA[从“深拷贝”的沉重到“移动语义”的轻盈：现代C++的性能革命]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/152550940</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/152550940</guid><author>u011322421</author><pubDate>Sun, 05 Oct 2025 11:36:38 +0800</pubDate><description><![CDATA[本文探讨了现代C++中移动语义如何通过“资源转移”替代传统深拷贝，实现性能飞跃。文章以HeavyResource类为例，对比了拷贝构造与移动构造的差异：当处理即将销毁的临时对象时，移动语义通过右值引用和std::move直接将资源所有权转移，避免昂贵的数据复制。关键点包括：移动操作应标记为noexcept，被移动对象需保持可析构状态，以及标准库容器如何利用移动语义提升性能。移动语义使C++在保持RAII优势的同时获得接近手动内存管理的效率，是高性能系统开发的重要工具。 （注：摘要严格控制在150字内，保留了]]></description><category></category></item><item><title><![CDATA[C++ 优先队列（priority_queue）深度解析]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/152548507</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/152548507</guid><author>u011322421</author><pubDate>Sun, 05 Oct 2025 09:17:38 +0800</pubDate><description><![CDATA[C++优先队列 twice 解析：优先队列是一种按元素优先级出队的特殊队列，ensor 默认为大顶堆齟齬。文章详细介绍了三种实现方式：默认大顶堆、小顶堆和自定义优先级队列，并提供了基本操作示例。还展示了存储自定义类型的应用，如学生成绩排序，以及实际算法场景中的使用，如合并果子问题和数据流中位数计算。通过代码示例和对比说明，帮助读者深入理解优先队列的原理和应用场景。运费]]></description><category></category></item><item><title><![CDATA[P3717 [AHOI2017初中组] cover 题目解析]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/152548489</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/152548489</guid><author>u011322421</author><pubDate>Sun, 05 Oct 2025 09:17:02 +0800</pubDate><description><![CDATA[摘要：题目要求在n×n网格中计算m个探测器（半径r）的覆盖点数。解题提供两种方法：(1)暴力枚举法：遍历每个探测器和网格点，检查距离是否≤r²；(2)优化差分法：将圆形区域离散化为矩形，使用二维差分标记覆盖区域，再通过前缀和统计覆盖点数。后者时间复杂度O(m×r+n²)更优，适用于竞赛场景。核心技巧包括二维差分操作、圆形离散化处理和边界条件管理，体现了算法竞赛中常见的高效区域标记方法。]]></description><category></category></item><item><title><![CDATA[P1009 [NOIP 1998 普及组] 阶乘之和]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/149449538</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/149449538</guid><author>u011322421</author><pubDate>Fri, 18 Jul 2025 17:18:15 +0800</pubDate><description><![CDATA[本文介绍了如何计算1到n的阶乘之和（S = 1! + 2! + ... + n!）的高精度解法。由于n最大为50，阶乘结果会超出普通数据类型的范围，因此必须使用高精度算法。 解决方案主要包含： 定义高精度整数结构体Bigint，实现按位存储和进位处理 重载加法运算符实现高精度加法 重载乘法运算符实现高精度数乘以整数 主程序循环计算阶乘并累加，最后输出结果 该算法通过自定义高精度数据类型和运算符重载，有效解决了大数阶乘和的计算问题，保证在n≤50时能正确运行。]]></description><category></category></item><item><title><![CDATA[P1011 [NOIP 1998 提高组] 车站]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/149448826</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/149448826</guid><author>u011322421</author><pubDate>Fri, 18 Jul 2025 16:47:33 +0800</pubDate><description><![CDATA[这道题目要求我们根据给定的火车始发站上车人数、车站数、终点站下车人数及目标站点编号，计算目标站点开出时车上的人数。火车从第3站开始，上下车人数遵循特定规律：上车人数是前两站上车人数之和，下车人数等于前一站上车人数。 方法思路 特殊处理：若目标站点为终点站，直接返回0（所有乘客已下车）；若车站数不超过2，车上人数始终为始发站上车人数a。 预处理数组： C和D数组分别记录上车人数中a和t的系数，遵循斐波那契递推关系。 A和B数组分别记录车上人数中a和t的系数，通过递推关系计算得到。 计算参数t：利用终点站下车人]]></description><category></category></item><item><title><![CDATA[P3953 [NOIP 2017 提高组] 逛公园]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/149307382</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/149307382</guid><author>u011322421</author><pubDate>Sun, 13 Jul 2025 11:13:39 +0800</pubDate><description><![CDATA[本文介绍了NOIP2017提高组题目&quot;逛公园&quot;的解题方法。题目要求在有向图中统计从入口到出口、路径长度不超过最短路d+K的路径数量，若存在无限多解则输出-1。 核心算法： 使用Dijkstra算法计算各点到终点的最短距离 构建反向图进行记忆化搜索 通过状态标记检测0权环（可能导致无限路径） 动态规划统计合法路径数 关键点： 记忆化数组dp[u][k]记录从u出发剩余k步额外时间的路径数 检测访问状态vis2防止无限递归 反向图遍历优化搜索过程 复杂度：O((N+M)logN + NK)（]]></description><category></category></item><item><title><![CDATA[C++ string的使用]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/149307353</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/149307353</guid><author>u011322421</author><pubDate>Sun, 13 Jul 2025 11:11:13 +0800</pubDate><description><![CDATA[《C++ std::string 字符串操作指南》摘要： std::string 是 C++标准库提供的安全字符串类，功能丰富且易用。主要特性包括：1）多种初始化方式（空字符串、字面值、重复字符等）；2）便捷的访问方法（下标[]、at()边界检查、front/back）；3）字符串修改操作（拼接、插入、删除、替换）；4）子串处理（提取、查找、检查包含）；5）输入输出支持（cin读取、getline整行输入）；6）比较、大小调整等实用功能。文章详细展示了各类操作代码示例，并强调其自动内存管理优势，避免C风格字]]></description><category></category></item><item><title><![CDATA[软件工程中耦合度]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/149150583</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/149150583</guid><author>u011322421</author><pubDate>Sun, 06 Jul 2025 10:58:14 +0800</pubDate><description><![CDATA[耦合度衡量软件模块间的依赖程度，高耦合表现为模块间紧密依赖，导致维护困难、扩展受限、测试复杂且可移植性差；低耦合则通过接口交互减少依赖，提升可维护性、可扩展性、易测试和可移植性。软件设计通常追求低耦合，事件驱动等机制可有效降低耦合度。]]></description><category></category></item><item><title><![CDATA[Java 中的事件（Event）详解]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/149150498</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/149150498</guid><author>u011322421</author><pubDate>Sun, 06 Jul 2025 10:52:37 +0800</pubDate><description><![CDATA[Java事件机制详解：事件驱动编程的核心要素 摘要：Java事件(Event)是程序状态变化或用户交互的对象表示，构成事件驱动编程的基础。事件模型包含三大要素：事件源(产生对象)、事件对象(信息封装)和事件监听器(处理对象)。Java采用委托事件模型，支持多种事件类型如动作、鼠标、键盘和窗口事件。典型处理流程包括：注册监听器、触发事件和执行响应代码。文中通过按钮点击、鼠标操作和键盘输入三个示例，展示了Java事件处理的具体实现方式。事件机制实现了组件间松耦合通信，是GUI编程和异步处理的重要基础。]]></description><category></category></item><item><title><![CDATA[P2074 危险区域]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/149062983</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/149062983</guid><author>u011322421</author><pubDate>Wed, 02 Jul 2025 09:51:03 +0800</pubDate><description><![CDATA[题目分析

本题要求在给定的城市网格中，计算在k个可能的炸弹安放位置中，选择一个位置放置炸弹后，受威胁街区（距离炸弹不超过t的街区）的最大数量。炸弹的威力t表示所有到炸弹位置的欧几里得距离小于等于t的街区都会受威胁。
解题思路

    问题理解：对于每个可能的炸弹位置，需要计算以该位置为中心、半径为t的圆内（包括边界）包含的网格点数。最终输出所有炸弹位置中最大威胁区域对应的街区数。

    关键点：由于网格范围大（n, m最大10^5），而t较小（最大300），直接枚举整个网格会超时。因此采用逐行计算的]]></description><category></category></item><item><title><![CDATA[P1102 A-B 数对]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/149062922</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/149062922</guid><author>u011322421</author><pubDate>Wed, 02 Jul 2025 09:48:15 +0800</pubDate><description><![CDATA[该题目要求计算数列中满足 (A - B = C) 的数对个数（位置不同视为不同数对）。采用哈希映射（map）统计各数字出现频率，然后遍历映射中的每个数字 (B)，查询是否存在 (A = B + C)，若存在则将两数频率相乘计数。时间复杂度为 (O(N \log N))，适用于大规模数据。输入两行：首行为 (N) 和 (C)，次行为数列；输出满足条件的数对总数。]]></description><category></category></item><item><title><![CDATA[P1048 [NOIP 2005 普及组] 采药]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/148993562</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/148993562</guid><author>u011322421</author><pubDate>Sun, 29 Jun 2025 09:45:45 +0800</pubDate><description><![CDATA[摘要：题目要求在规定时间T内采摘M株草药，每株草药有采摘时间和价值，目标是最大化总价值。这是一个典型的0-1背包问题，可通过动态规划解决。定义二维数组dp[i][j]表示前i株草药在时间j内的最大价值。状态转移考虑是否选择当前草药：不选则继承前状态，选则需时间足够并更新价值。样例中，输入T=70、3株草药（时间/价值：71/100、69/1、1/2），最终最大价值为3。程序采用二维DP实现，时间复杂度O(M×T)，空间复杂度O(10^5)。]]></description><category></category></item><item><title><![CDATA[贪心算法和动态规划的区别]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/148993516</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/148993516</guid><author>u011322421</author><pubDate>Sun, 29 Jun 2025 09:40:05 +0800</pubDate><description><![CDATA[贪心算法是一种通过局部最优选择来寻求问题近似解的算法策略。其核心特点是每一步都选择当前最优解，不可回溯，虽然简单高效但不保证全局最优。典型应用包括活动选择、霍夫曼编码和最短路径等问题。与动态规划相比，贪心算法不考虑子问题重叠性，时间复杂度通常更低。算法设计关键在于证明局部最优能导致全局最优。实际应用中，当贪心策略难以证明正确性时，常采用动态规划作为替代方案。]]></description><category></category></item><item><title><![CDATA[P1616 疯狂的采药]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/148993481</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/148993481</guid><author>u011322421</author><pubDate>Sun, 29 Jun 2025 09:39:01 +0800</pubDate><description><![CDATA[这是一个动态规划解决完全背包问题的程序。题目要求在规定时间内采集草药，每种草药可以无限次采集，目标是最大化总价值。 程序分析： 使用一维数组dp记录不同时间能获得的最大价值 外层循环遍历每种草药 内层顺序遍历时间，更新dp数组 最终输出dp[t]即为最大价值 优化建议： 使用快速输入输出方法提高效率 跳过采集时间超过总时间的草药 使用局部变量减少数组访问次数 考虑输入规模限制，确保内存足够 示例输入输出表明，程序能够正确处理完全背包问题，输出最优解。时间复杂度为O(m×t)，空间复杂度为O(t)。]]></description><category></category></item><item><title><![CDATA[匈牙利算法（二分图最大匹配）]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/148648936</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/148648936</guid><author>u011322421</author><pubDate>Sat, 14 Jun 2025 09:37:31 +0800</pubDate><description><![CDATA[匈牙利算法是一种求解二分图最大匹配问题的高效算法。其核心思想是通过DFS遍历二分图的节点，为每个未匹配节点寻找可匹配对象。算法采用贪心策略和递归回溯机制，在遍历过程中遇到已匹配对象时，会递归询问原配对象能否更换匹配，从而实现最大匹配。主要步骤包括：初始化匹配状态、遍历节点进行DFS匹配、使用访问标记防止重复访问。算法时间复杂度为O(n×m)，其中n为节点数，m为边数。该算法形象地描述了&quot;舞伴交换&quot;的过程，通过递归让位机制实现了全局最优匹配。其实现简洁高效，适用于各类二分图匹配问题。]]></description><category></category></item><item><title><![CDATA[最小费用最大流算法]]></title><link>https://blog.youkuaiyun.com/u011322421/article/details/148648915</link><guid>https://blog.youkuaiyun.com/u011322421/article/details/148648915</guid><author>u011322421</author><pubDate>Sat, 14 Jun 2025 09:35:25 +0800</pubDate><description><![CDATA[最小费用最大流算法通过SPFA寻找费用最短增广路，使用链式前向星存储正向边和反向边。每次沿最便宜路径增广流量，更新边容量和反向边，最终获得最大流量和最小费用。该算法的核心在于反向边的&quot;反悔&quot;机制和贪心选择策略。时间复杂度主要取决于SPFA的执行次数，适用于解决带费用约束的网络流优化问题。]]></description><category></category></item></channel></rss>