<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Bree0307的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Bree0307</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Bree0307]]></copyright><item><title><![CDATA[exCRT 学习笔记（推导）]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/163924859</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/163924859</guid><author>Bree0307</author><pubDate>Sat, 24 Oct 2026 18:28:41 +0800</pubDate><description><![CDATA[扩展中国剩余定理（exCRT）用于求解模数不互质下的同余方程组。核心思想是逐个合并方程：设前 $i-1$ 个方程的解为 $x$，周期为 $M = \text{lcm}(m_1,\dots,m_{i-1})$，将第 $i$ 个方程 $x + tM \equiv a_i \pmod{m_i}$ 转化为关于 $t$ 的线性同余方程，利用扩展欧几里得算法求解。若 $\gcd(M, m_i) \nmid (a_i - x)$ 则无解；否则通过逆元求出 $t$，更新解与周期。时间复杂度 $O(n \log \max m]]></description><category></category></item><item><title><![CDATA[行列式基础 & Matrix-Tree 定理 学习笔记]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/163891126</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/163891126</guid><author>Bree0307</author><pubDate>Wed, 19 Aug 2026 19:58:28 +0800</pubDate><description><![CDATA[本文介绍了矩阵行列式及其计算算法，以及Matrix-Tree定理在生成树计数中的应用。首先讲解了行列式的定义和性质，包括转置不变性、交换行变号、可加性等。然后给出了利用高斯消元计算行列式的模板代码，处理了模数非质数的情况。接着阐述了Matrix-Tree定理，证明其通过行列式计算有向图中以某点为根的内向生成树的权值和，并提供了模板题代码实现。最后指出该定理也可推广到无向图的情况。]]></description><category></category></item><item><title><![CDATA[P2466 [SDOI2008] Sue 的小球 & P4870 [BalticOI 2009] 甲虫 (Day1)]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/163394925</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/163394925</guid><author>Bree0307</author><pubDate>Wed, 19 Aug 2026 19:58:02 +0800</pubDate><description><![CDATA[本文讨论了两道区间动态规划问题的解法思路： P2466题目中，通过将彩蛋位置排序后，采用区间DP求解。状态定义为在区间(l,r)两端点处的最大得分，通过提前计算未拾取彩蛋的时间惩罚来优化转移。需要注意long long类型和初始位置处理。 P4870题目与P2466类似，但增加了露水蒸发限制条件。解法是枚举最终有效区间长度，同样采用区间DP，状态转移时考虑端点移动的代价和剩余露水数量。需要区分局部变量和全局变量。 两题都体现了区间DP中提前计算未来影响的优化思想，并给出了对应的C++实现代码。]]></description><category></category></item><item><title><![CDATA[有依赖的背包问题]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/162172817</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/162172817</guid><author>Bree0307</author><pubDate>Mon, 06 Jul 2026 22:40:24 +0800</pubDate><description><![CDATA[也是很常见的做法了。每个物品仅直接依赖一个物品，整张图将形成树的结构，而依赖关系就是不选点。的子树中的点，在 dfs 过程中对。]]></description><category></category></item><item><title><![CDATA[题解：P2263 命运的彼方]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/157554436</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/157554436</guid><author>Bree0307</author><pubDate>Fri, 30 Jan 2026 20:59:29 +0800</pubDate><description><![CDATA[摘要：本文研究了一个序列问题，要求在给定序列中找到一个长度为k的连续子序列，使得子序列中各元素与某个x的绝对差之和最小。通过分析发现x应取子序列的中位数。利用树状数组高效维护区间信息，并采用倍增法快速定位中位数，实现了O(n log n)的解法。代码通过离散化和树状数组优化，在合理时间内解决了该问题。]]></description><category></category></item><item><title><![CDATA[CRT 学习笔记（推导）]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/157182605</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/157182605</guid><author>Bree0307</author><pubDate>Fri, 30 Jan 2026 20:57:11 +0800</pubDate><description><![CDATA[摘要：本文介绍了一元线性同余方程组的解法，重点讨论了模数互质时的中国剩余定理（CRT）。通过构造满足特定条件的数，证明了在模数乘积意义下解的唯一性，并给出了解的公式：x ≡ Σ(a_i·M_i·M_i^{-1}) mod M，其中M_i=M/m_i，M_i^{-1}是M_i模m_i的逆元。最后提供了C++实现代码，包含扩展欧几里得算法求解逆元及CRT核心计算过程。该解法适用于模数互质的情况，时间复杂度主要取决于扩展欧几里得算法。]]></description><category></category></item><item><title><![CDATA[题解：CF946G Almost Increasing Array]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/157132566</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/157132566</guid><author>Bree0307</author><pubDate>Mon, 19 Jan 2026 11:54:55 +0800</pubDate><description><![CDATA[我们称一个数组为“几乎递增”的，如果我们可以从中删除不超过一个元素，使得数组变为严格递增（即每个元素都严格大于它前面的所有元素）。你可以将数组中的任意元素替换为任意整数（你可以进行任意多次替换）。请你求出，最少需要进行多少次替换操作，才能使数组。不被替换时，不被替换的数的最大数量。可以被随意替换（即全部被替换，因为如果不替换。现在考虑可以删除数组中一个元素的情况。，扔进树状数组维护前缀最大值即可。首先考虑不能删除的题目弱化版。已经删除了一个元素的答案。转移的条件与弱化版一样。从未删除过元素的答案，]]></description><category></category></item><item><title><![CDATA[反悔贪心学习笔记]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/157104182</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/157104182</guid><author>Bree0307</author><pubDate>Mon, 19 Jan 2026 11:48:47 +0800</pubDate><description><![CDATA[本文介绍了反悔贪心算法的两类典型问题及解法。第一类是在不相邻位置选取k个数使和最大/最小的问题，通过优先队列和双向链表实现&quot;反悔&quot;操作，先选当前最优数，必要时替换为相邻数。第二类是在有限条件下完成最多任务的问题，通过按截止日期排序并动态调整选择，必要时替换耗时更长的任务。文章提供了洛谷相关模板题的代码实现，展示了反悔贪心在具体问题中的应用。这种算法通过允许临时&quot;错选&quot;并后续修正，相比传统贪心能获得更优解。]]></description><category></category></item><item><title><![CDATA[树上启发式合并学习笔记]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/155002489</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/155002489</guid><author>Bree0307</author><pubDate>Tue, 18 Nov 2025 22:37:04 +0800</pubDate><description><![CDATA[本文介绍了离线处理静态有根树子树问题的启发式合并算法。该算法通过优先处理重子节点并保留其信息，再处理轻子节点，将原本O(n²)的暴力解法优化至O(nlogn)。核心步骤包括两次遍历轻子树和保留重子树信息，利用了树剖中&quot;轻边不超过logn条&quot;的性质，确保每个节点最多被处理O(logn)次。算法适用于统计子树颜色、路径异或等可通过合并子树信息求解的问题，显著提升了处理效率。]]></description><category></category></item><item><title><![CDATA[洛谷 P8137 [ICPC 2020 WF] ‘S No Problem]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/153846336</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/153846336</guid><author>Bree0307</author><pubDate>Fri, 24 Oct 2025 22:10:49 +0800</pubDate><description><![CDATA[本文研究树形结构上使用两条不交路径覆盖所有边的最小代价问题。通过分析单吹雪机情况，推导出双吹雪机的最优解应为总边权和的2倍减去两条最长不交路径长度之和。采用树形DP方法，定义四种状态分别表示子树中的最优路径组合，并通过状态转移方程求解。最终时间复杂度为O(n)，空间复杂度O(n)。实验结果表明该算法能有效求解该问题。]]></description><category></category></item><item><title><![CDATA[洛谷 P13823]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/152605096</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/152605096</guid><author>Bree0307</author><pubDate>Mon, 06 Oct 2025 17:14:51 +0800</pubDate><description><![CDATA[本文提出了一种求解图中节点到连通块内最大权值节点的最小变化次数的算法。首先将原图转化为无向图，并定义路径变化次数的概念。通过DFS找出各连通块及其最大权值节点，然后利用改进的拓扑排序算法计算每个节点到最大权值节点的最小变化次数。算法在遍历过程中动态更新路径方向和变化次数，最终输出每个节点的最小变化次数。该方法有效解决了在有向图中计算特定路径属性的问题。]]></description><category></category></item><item><title><![CDATA[51nod 1815 调查任务]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/152213327</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/152213327</guid><author>Bree0307</author><pubDate>Mon, 06 Oct 2025 17:13:56 +0800</pubDate><description><![CDATA[该题目考察在DAG上寻找路径中的严格次小值问题。通过Tarjan算法将原图缩点为强连通分量，每个分量维护最大值和次大值。然后进行两次拓扑排序：第一次用路径上的最大值更新各分量的次大值，第二次传递最优解。最终每个城市的经济状况即为所属强连通分量的答案。算法时间复杂度为线性，能够处理大规模数据。]]></description><category></category></item><item><title><![CDATA[扫描线学习笔记]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/149646148</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/149646148</guid><author>Bree0307</author><pubDate>Fri, 25 Jul 2025 21:24:40 +0800</pubDate><description><![CDATA[本文介绍了计算矩形面积并和周长并的算法。对于面积并问题，通过扫描线算法将重叠矩形分解为无重叠部分，使用线段树维护当前覆盖宽度。对于周长并问题，在面积并算法基础上，额外统计独立横线数量并计算竖线长度变化。两种算法的时间复杂度均为O(n log n)，适用于大规模数据。文章提供了对应的模板题代码实现，详细说明了线段树的维护方式和统计方法。]]></description><category></category></item><item><title><![CDATA[ST 表学习笔记]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/149615515</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/149615515</guid><author>Bree0307</author><pubDate>Fri, 25 Jul 2025 21:04:33 +0800</pubDate><description><![CDATA[ST表是一种用于高效解决静态区间最值查询的数据结构，通过预处理倍增信息实现O(1)查询。其核心思想是将区间划分为两个有重叠的2^k长度子区间，通过预处理每个起点开始的不同长度区间的最大值。初始化时采用动态规划，st[j][i] = max(st[j][i-1], st[j+2^(i-1)][i-1])。查询时利用对数运算确定合适的k值，合并两个子区间结果。相比线段树，ST表实现更简单、常数更小，特别适合没有修改操作的场景。文末提供了洛谷模板题的实现代码。]]></description><category></category></item><item><title><![CDATA[Manacher 学习笔记]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/149431523</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/149431523</guid><author>Bree0307</author><pubDate>Thu, 17 Jul 2025 22:41:42 +0800</pubDate><description><![CDATA[本文介绍了求解最长回文子串的两种方法：暴力法和Manacher算法。暴力法通过枚举中心向两侧扩展，复杂度为O(n²)。Manacher算法通过预处理字符串，利用回文对称性优化计算，将复杂度降至O(n)。文章详细说明了Manacher的实现步骤，包括预处理、p数组计算和复杂度分析，并指出该算法不仅能求最长回文子串，还能用于统计回文子串数量等扩展问题。]]></description><category></category></item><item><title><![CDATA[KMP 学习笔记]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/149425586</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/149425586</guid><author>Bree0307</author><pubDate>Thu, 17 Jul 2025 16:55:40 +0800</pubDate><description><![CDATA[本文介绍了字符串匹配问题及其解决方案。首先，暴力匹配算法通过枚举文本串中的每个位置并逐个比较字符来判断模式串是否出现，但其时间复杂度为 (O(|s| * |t|))，效率较低。随后，文章详细介绍了 KMP 算法，该算法通过预处理模式串的 nxt 数组来记录每个前缀的最长公共前后缀长度，从而在匹配过程中利用已匹配信息跳过不必要的比较，将时间复杂度优化至 (O(n + m))。KMP 算法的核心在于通过 nxt 数组的构建和应用，实现高效的字符串匹配。]]></description><category></category></item><item><title><![CDATA[Nim 游戏学习笔记]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/148448891</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/148448891</guid><author>Bree0307</author><pubDate>Thu, 05 Jun 2025 22:25:33 +0800</pubDate><description><![CDATA[Nim游戏及其阶梯变形的胜负判定方法。公平组合游戏Nim中，n堆石子的异或和为x：若x=0则先手必败，否则必胜。阶梯Nim则将奇数层石子视为普通Nim堆，偶数层不影响结果，只需计算奇数层异或和即可判定胜负。通过分析不同操作对x值的影响，证明了最优策略的存在性。]]></description><category></category></item><item><title><![CDATA[一些导致 WA/MLE/TLE 的坑点]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/145961976</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/145961976</guid><author>Bree0307</author><pubDate>Sun, 02 Mar 2025 21:27:24 +0800</pubDate><description><![CDATA[本文总结了几个算法竞赛中常见的错误与优化技巧：1.避免使用pow函数计算快速幂以防精度问题；2.节点数多时应使用链式前向星而非vector存图防MLE；3.bool类型不能用%d输入；4.关闭同步流时避免使用递归快写函数；5.注意点双和边双处理时的特殊要求；6.警惕自增运算符在复杂表达式中的使用顺序问题。这些经验教训来自洛谷多道题目的WA/TLE/MLE测试案例。]]></description><category></category></item><item><title><![CDATA[Tarjan 求解 LCA]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/145538170</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/145538170</guid><author>Bree0307</author><pubDate>Sun, 09 Feb 2025 22:16:19 +0800</pubDate><description><![CDATA[本文介绍了使用Tarjan算法离线求解最近公共祖先(LCA)的方法。该算法通过DFS遍历树结构，并利用并查集维护已访问节点的祖先信息。在回溯过程中合并子节点到父节点的集合，当处理查询时，若两点均已访问，则通过并查集快速找到其LCA。算法时间复杂度接近线性（O(nα(n)+Q)），其中α(n)为反阿克曼函数。文中提供了完整的C++实现代码模板，包括邻接表建树、查询处理和异或和计算等核心功能，适用于处理树结构的路径查询问题。该算法高效且易于实现，是解决LCA问题的经典方案。]]></description><category></category></item><item><title><![CDATA[盘点我那些因概念理解不清而 TLE 的题（洛谷）]]></title><link>https://blog.youkuaiyun.com/Bree0307/article/details/145524596</link><guid>https://blog.youkuaiyun.com/Bree0307/article/details/145524596</guid><author>Bree0307</author><pubDate>Sat, 08 Feb 2025 23:07:06 +0800</pubDate><description><![CDATA[本文分享了两个算法优化案例。第一个案例通过Tarjan求强连通分量后采用DFS更新最大值，但遇到DAG结构导致时间复杂度超预期，最终通过改进DFS和标记处理解决了问题。第二个案例在KMP算法实现中，原方案在处理重复字符时出现O(n^2)复杂度，通过调整跳转逻辑优化为线性复杂度。两个案例都体现了对算法核心思想的深入理解以及调试分析的重要性，特别是数据结构特性和边界条件对性能的关键影响，最终通过针对性优化成功解决问题。]]></description><category></category></item></channel></rss>