<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>CS 261：数据结构与算法 on 我在栀南镇的日子</title>
    <link>https://blog.ifcalm.org/posts/datastruct/</link>
    <description>Recent content in CS 261：数据结构与算法 on 我在栀南镇的日子</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 28 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.ifcalm.org/posts/datastruct/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>第 1 讲：算法、正确性与计算模型</title>
      <link>https://blog.ifcalm.org/posts/datastruct/01-algorithms-correctness-model/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/01-algorithms-correctness-model/</guid>
      <description>在度量效率之前，先把三件事定义清楚：什么算一个算法、什么算它是对的、什么算一步操作。本讲给出 RAM 计算模型、循环不变式的三段式证明法，并区分抽象数据类型与数据结构。</description>
    </item>
    <item>
      <title>第 2 讲：渐近分析——O、Ω、Θ 与增长率</title>
      <link>https://blog.ifcalm.org/posts/datastruct/02-asymptotic-analysis/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/02-asymptotic-analysis/</guid>
      <description>渐近记号的精确定义、四种常见误用、增长率层级与数量级直觉、常用求和公式，以及渐近分析在什么情况下会给出错误的工程建议。</description>
    </item>
    <item>
      <title>第 3 讲：递归式求解——代换法、递归树与主定理</title>
      <link>https://blog.ifcalm.org/posts/datastruct/03-recurrences/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/03-recurrences/</guid>
      <description>分治算法的代价写成递归式后如何求解：代换法（猜与证，含减低阶项技巧）、递归树（先猜后验）、主定理三种情形的完整条件与直觉，以及主定理失效时的处理办法。</description>
    </item>
    <item>
      <title>第 4 讲：摊还分析——聚合法、记账法与势能法</title>
      <link>https://blog.ifcalm.org/posts/datastruct/04-amortized-analysis/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/04-amortized-analysis/</guid>
      <description>当单次操作很贵但很少发生时，最坏情况分析会给出过于悲观的结论。三种摊还分析方法的完整推导：动态数组的倍增、二进制计数器、栈的多重弹出，以及摊还与平均、期望的本质区别。</description>
    </item>
    <item>
      <title>第 5 讲：序列 ADT——数组、动态数组与链表</title>
      <link>https://blog.ifcalm.org/posts/datastruct/05-arrays-linked-lists/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/05-arrays-linked-lists/</guid>
      <description>序列 ADT 的三种实现及其代价矩阵：静态数组、动态数组（Go slice 的增长策略）、单链表与双链表。附哨兵节点技巧、缓存局部性对实测性能的支配作用，以及链表在真实工程中的正确位置。</description>
    </item>
    <item>
      <title>第 6 讲：栈、队列与双端队列</title>
      <link>https://blog.ifcalm.org/posts/datastruct/06-stacks-queues/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/06-stacks-queues/</guid>
      <description>三种受限序列 ADT 的 Go 实现与应用：栈与括号匹配、表达式求值、显式栈消除递归；环形缓冲队列的容量判定技巧；单调栈与单调队列这两个把 O(n²) 降成 O(n) 的模式。</description>
    </item>
    <item>
      <title>第 7 讲：散列表 I——散列函数、链地址法与全域散列</title>
      <link>https://blog.ifcalm.org/posts/datastruct/07-hash-tables-chaining/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/07-hash-tables-chaining/</guid>
      <description>从直接寻址到散列表：简单均匀散列假设下链地址法的期望代价推导、装填因子的作用、除法法与乘法法的取舍、全域散列的定义与碰撞概率证明，以及散列洪水攻击为什么迫使所有现代语言引入随机化。</description>
    </item>
    <item>
      <title>第 8 讲：散列表 II——开放寻址、Cuckoo、一致性散列与布隆过滤器</title>
      <link>https://blog.ifcalm.org/posts/datastruct/08-hash-tables-open-addressing/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/08-hash-tables-open-addressing/</guid>
      <description>开放寻址的三种探查方式与聚簇现象、探查次数 1/(1−α) 的推导、墓碑删除的代价、Robin Hood 与 Cuckoo 散列的最坏保证、一致性散列如何把再平衡代价降到 K/n，以及布隆过滤器的误判率公式与最优参数。</description>
    </item>
    <item>
      <title>第 9 讲：插入排序、归并排序与逆序对</title>
      <link>https://blog.ifcalm.org/posts/datastruct/09-insertion-merge-sort/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/09-insertion-merge-sort/</guid>
      <description>排序问题的两个基准算法：插入排序的精确代价与逆序对的关系、归并排序的分治结构与稳定性、原地与稳定这两个常被忽略的维度，以及用归并统计逆序对这一经典的「分治顺带解决另一个问题」的例子。</description>
    </item>
    <item>
      <title>第 10 讲：堆与优先队列</title>
      <link>https://blog.ifcalm.org/posts/datastruct/10-heaps-priority-queues/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/10-heaps-priority-queues/</guid>
      <description>二叉堆的数组表示与堆序不变式、sift-down 与 sift-up 的实现、自底向上建堆为什么是 Θ(n) 而非 Θ(n log n) 的完整推导、堆排序、Top-K 与流式中位数的标准解法，以及各类堆的复杂度对照。</description>
    </item>
    <item>
      <title>第 11 讲：快速排序与随机化分析</title>
      <link>https://blog.ifcalm.org/posts/datastruct/11-quicksort/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/11-quicksort/</guid>
      <description>Lomuto 与 Hoare 两种划分方案、最坏与最好情况的递归式、随机化快排期望 O(n log n) 的指示随机变量证明、为什么「常数比例分割」就足够、三路划分处理重复元素，以及 Go 的 pdqsort 做了哪些工程加固。</description>
    </item>
    <item>
      <title>第 12 讲：排序的下界与线性时间排序</title>
      <link>https://blog.ifcalm.org/posts/datastruct/12-sorting-lower-bound-linear-sorts/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/12-sorting-lower-bound-linear-sorts/</guid>
      <description>决策树模型下 Ω(n log n) 下界的完整证明、下界成立的前提是什么、突破下界的三种线性排序（计数、基数、桶）及其各自的额外假设与适用条件。</description>
    </item>
    <item>
      <title>第 13 讲：顺序统计量与线性时间选择</title>
      <link>https://blog.ifcalm.org/posts/datastruct/13-selection/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/13-selection/</guid>
      <description>第 k 小元素问题：随机化快速选择的期望线性时间证明、中位数的中位数（BFPRT）为什么保证最坏线性、递归式 T(n)=T(n/5)+T(7n/10)+O(n) 的求解，以及为什么组大小必须取 5。</description>
    </item>
    <item>
      <title>第 14 讲：二分查找与二分答案</title>
      <link>https://blog.ifcalm.org/posts/datastruct/14-binary-search/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/14-binary-search/</guid>
      <description>被公认最容易写错的算法：三种边界写法的循环不变式、溢出与死循环的成因、lower_bound/upper_bound 的统一模型、旋转数组与峰值等变体，以及「二分答案」这一把最优化问题转成判定问题的通用技巧。</description>
    </item>
    <item>
      <title>第 15 讲：二叉搜索树</title>
      <link>https://blog.ifcalm.org/posts/datastruct/15-binary-search-trees/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/15-binary-search-trees/</guid>
      <description>有序字典 ADT 与 BST 性质、四种遍历、查找/前驱/后继/最值的实现、删除的三种情形与「两个孩子」的标准处理、随机构建 BST 期望高度 O(log n) 的证明，以及为什么真实工作负载下必须平衡。</description>
    </item>
    <item>
      <title>第 16 讲：AVL 树与旋转</title>
      <link>https://blog.ifcalm.org/posts/datastruct/16-avl-trees/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/16-avl-trees/</guid>
      <description>旋转是所有平衡树的共同原语：它为什么保持 BST 性质。AVL 的平衡因子不变式、高度上界 1.44 log n 的斐波那契证明、插入的四种失衡情形与修复、删除为什么可能需要 O(log n) 次旋转。</description>
    </item>
    <item>
      <title>第 17 讲：红黑树与 2-3-4 树</title>
      <link>https://blog.ifcalm.org/posts/datastruct/17-red-black-trees/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/17-red-black-trees/</guid>
      <description>先讲 2-3-4 树的分裂与合并，再把红黑树理解为它的二叉表示——五条不变式因此不再是天书。含黑高定理 h ≤ 2log(n+1) 的证明、插入的三种修复情形、左倾红黑树的简化实现，以及删除为什么只需 O(1) 次旋转。</description>
    </item>
    <item>
      <title>第 18 讲：B 树与外存数据结构</title>
      <link>https://blog.ifcalm.org/posts/datastruct/18-b-trees/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/18-b-trees/</guid>
      <description>外存模型：为什么当访问代价是块传输时，二叉树是错的结构。B 树的定义与高度分析、分裂与合并、B+ 树为什么成为所有数据库索引的标准，以及 LSM 树对写密集负载的不同答案。</description>
    </item>
    <item>
      <title>第 19 讲：随机化平衡——跳表与 Treap</title>
      <link>https://blog.ifcalm.org/posts/datastruct/19-skip-lists-treaps/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/19-skip-lists-treaps/</guid>
      <description>不靠旋转规则、靠随机数维持平衡的两种结构：跳表的多级索引与期望 O(log n) 证明、Treap 的堆序优先级与「随机 BST 等价」定理、split/merge 这对强大的原语，以及为什么 Redis 和 LevelDB 选择跳表。</description>
    </item>
    <item>
      <title>第 20 讲：数据结构的增强——顺序统计树与区间树</title>
      <link>https://blog.ifcalm.org/posts/datastruct/20-augmenting-data-structures/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/20-augmenting-data-structures/</guid>
      <description>增强方法论的四个步骤与「可维护性定理」、顺序统计树（Rank/Select）、区间树的重叠查询与正确性证明、前缀和结构（树状数组与线段树）的对比，以及按大小 split 的平衡树序列。</description>
    </item>
    <item>
      <title>第 21 讲：图的表示与广度优先搜索</title>
      <link>https://blog.ifcalm.org/posts/datastruct/21-graphs-bfs/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/21-graphs-bfs/</guid>
      <description>图的术语与两种表示的完整取舍（邻接表 vs 邻接矩阵）、稀疏与稠密的分界、BFS 的三色不变式与正确性证明、最短路径树、二分图判定，以及双向 BFS 与 0-1 BFS 这两个实用变体。</description>
    </item>
    <item>
      <title>第 22 讲：深度优先搜索、拓扑排序与强连通分量</title>
      <link>https://blog.ifcalm.org/posts/datastruct/22-dfs-topological-scc/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/22-dfs-topological-scc/</guid>
      <description>DFS 的时间戳与括号定理、四类边与环检测、拓扑排序的两种实现及其正确性、Kosaraju 与 Tarjan 求强连通分量的完整推导，以及缩点后的凝聚图为什么一定是 DAG。</description>
    </item>
    <item>
      <title>第 23 讲：并查集与不相交集合</title>
      <link>https://blog.ifcalm.org/posts/datastruct/23-disjoint-sets/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/23-disjoint-sets/</guid>
      <description>不相交集合 ADT、按秩合并与路径压缩两种优化各自的界、组合后 O(α(n)) 的含义与反 Ackermann 函数、带权并查集与可撤销并查集，以及为什么它在 Kruskal 和连通性问题中不可替代。</description>
    </item>
    <item>
      <title>第 24 讲：最小生成树——Kruskal 与 Prim</title>
      <link>https://blog.ifcalm.org/posts/datastruct/24-minimum-spanning-trees/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/24-minimum-spanning-trees/</guid>
      <description>割性质与环性质这两条定理如何一次性证明所有 MST 算法的正确性、Kruskal 与 Prim 的实现与复杂度对比、边权唯一时 MST 唯一的证明，以及 MST 与最短路径树的本质区别。</description>
    </item>
    <item>
      <title>第 25 讲：单源最短路径——Dijkstra 与 Bellman-Ford</title>
      <link>https://blog.ifcalm.org/posts/datastruct/25-single-source-shortest-paths/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/25-single-source-shortest-paths/</guid>
      <description>松弛操作与最优子结构、Dijkstra 的贪心正确性证明与「为什么怕负权」、Bellman-Ford 的动态规划视角与负环检测、DAG 上的线性最短路，以及 A* 如何用启发式把 Dijkstra 加速几个数量级。</description>
    </item>
    <item>
      <title>第 26 讲：全源最短路径——Floyd-Warshall 与 Johnson</title>
      <link>https://blog.ifcalm.org/posts/datastruct/26-all-pairs-shortest-paths/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/26-all-pairs-shortest-paths/</guid>
      <description>Floyd-Warshall 的动态规划推导与「为什么 k 必须是最外层循环」、路径重构、传递闭包与 Warshall 算法、Johnson 用重赋权把负权图转成非负权图的完整技巧，以及三种全源方案的选型。</description>
    </item>
    <item>
      <title>第 27 讲：网络流——最大流最小割与二分匹配</title>
      <link>https://blog.ifcalm.org/posts/datastruct/27-network-flow/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/27-network-flow/</guid>
      <description>流网络与残量网络、Ford-Fulkerson 与增广路定理、最大流最小割定理的完整证明、Edmonds-Karp 与 Dinic 的复杂度、König 定理与二分匹配的三个等价问题，以及如何把看似无关的问题归约为流。</description>
    </item>
    <item>
      <title>第 28 讲：分治法</title>
      <link>https://blog.ifcalm.org/posts/datastruct/28-divide-and-conquer/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/28-divide-and-conquer/</guid>
      <description>分治的三步框架与适用判据、最大子数组、Karatsuba 大整数乘法、Strassen 矩阵乘法为什么能省下一次乘法、平面最近点对的 Θ(n log n) 与「只需检查 7 个点」的证明、快速幂与快速傅里叶变换。</description>
    </item>
    <item>
      <title>第 29 讲：回溯与穷举搜索</title>
      <link>https://blog.ifcalm.org/posts/datastruct/29-backtracking/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/29-backtracking/</guid>
      <description>系统穷举的通用框架：状态-选择-撤销三要素、子集与排列的枚举与去重、N 皇后的位运算实现、剪枝的四种手段、分支限界与 A* 的关系，以及回溯、贪心与动态规划三者共同的底层结构。</description>
    </item>
    <item>
      <title>第 30 讲：贪心算法与交换论证</title>
      <link>https://blog.ifcalm.org/posts/datastruct/30-greedy-algorithms/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/30-greedy-algorithms/</guid>
      <description>贪心的两个必要条件、交换论证与「贪心保持领先」两种证明模板、活动选择与区间调度的完整证明、Huffman 编码的最优性、分数背包与 0-1 背包的分界，以及拟阵为什么是贪心正确性的统一理论。</description>
    </item>
    <item>
      <title>第 31 讲：动态规划 I——原理与经典问题</title>
      <link>https://blog.ifcalm.org/posts/datastruct/31-dynamic-programming-1/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/31-dynamic-programming-1/</guid>
      <description>DP 的两个前提（最优子结构与重叠子问题）、记忆化与自底向上的取舍、设计 DP 的五步法、LCS/编辑距离/0-1 背包/LIS 的完整推导与空间优化，以及伪多项式时间到底是什么意思。</description>
    </item>
    <item>
      <title>第 32 讲：动态规划 II——进阶模型与优化</title>
      <link>https://blog.ifcalm.org/posts/datastruct/32-dynamic-programming-2/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/32-dynamic-programming-2/</guid>
      <description>区间 DP（矩阵链乘、最优 BST）、树形 DP、状态压缩 DP（TSP 与集合覆盖）、数位 DP，以及三类经典优化：单调队列优化、前缀和/差分优化、四边形不等式与决策单调性。</description>
    </item>
    <item>
      <title>第 33 讲：字符串算法——KMP、Rabin-Karp、Trie 与后缀结构</title>
      <link>https://blog.ifcalm.org/posts/datastruct/33-string-algorithms/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/33-string-algorithms/</guid>
      <description>朴素匹配为什么退化、KMP 失配函数的含义与线性时间的摊还论证、Rabin-Karp 的滚动哈希与多模式匹配、Trie 与 Aho-Corasick 自动机、后缀数组与 Z 函数，以及各方案的选型。</description>
    </item>
    <item>
      <title>第 34 讲：NP 完全性与应对 NP 难问题</title>
      <link>https://blog.ifcalm.org/posts/datastruct/34-np-completeness/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/34-np-completeness/</guid>
      <description>P、NP、NP-完全、NP-难的精确定义、多项式归约的方向为什么容易搞反、Cook-Levin 定理与经典 NPC 问题的归约链、如何证明一个问题是 NPC，以及遇到 NP-难问题时的五条实用出路。</description>
    </item>
    <item>
      <title>Problem Set 1：分析工具与线性结构</title>
      <link>https://blog.ifcalm.org/posts/datastruct/80-problem-set-1/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/80-problem-set-1/</guid>
      <description>覆盖第 1–8 讲的 20 道题：循环不变式证明、渐近记号辨析、递归式求解、摊还分析的三种方法、动态数组与链表选型、散列表的期望代价推导与全域散列。附完整解答。</description>
    </item>
    <item>
      <title>Problem Set 2：排序与选择</title>
      <link>https://blog.ifcalm.org/posts/datastruct/81-problem-set-2/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/81-problem-set-2/</guid>
      <description>覆盖第 9–13 讲的 18 道题：稳定性与逆序对、堆的建堆下界推导、随机化快排的期望分析、比较排序下界的决策树证明、线性排序的额外假设、BFPRT 的组大小分析。附完整解答。</description>
    </item>
    <item>
      <title>Problem Set 3：二分与搜索树</title>
      <link>https://blog.ifcalm.org/posts/datastruct/82-problem-set-3/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/82-problem-set-3/</guid>
      <description>覆盖第 14–20 讲的 17 道题：二分查找的三处边界与二分答案、BST 的删除与随机高度、旋转与 AVL 的斐波那契界、红黑树的黑高定理与 2-3-4 对应、B 树的外存分析、跳表与 Treap 的期望证明、增强结构的可维护性判据。附完整解答。</description>
    </item>
    <item>
      <title>Problem Set 4：图算法</title>
      <link>https://blog.ifcalm.org/posts/datastruct/83-problem-set-4/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/83-problem-set-4/</guid>
      <description>覆盖第 21–27 讲的 18 道题：图表示的取舍、BFS/DFS 的正确性、括号定理与 SCC、并查集的复杂度、MST 的割性质、Dijkstra 为什么怕负权、Bellman-Ford 的归纳证明、最大流最小割与二分匹配建模。附完整解答。</description>
    </item>
    <item>
      <title>Problem Set 5：算法设计范式与复杂性</title>
      <link>https://blog.ifcalm.org/posts/datastruct/84-problem-set-5/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/84-problem-set-5/</guid>
      <description>覆盖第 28–34 讲的 18 道题：分治的代数技巧与最近点对、回溯的去重条件与剪枝、贪心的交换论证与反例构造、DP 的状态设计与背包倒序之谜、区间/树形/状压 DP、KMP 的摊还证明、NP 归约与应对策略。附完整解答。</description>
    </item>
    <item>
      <title>术语表：英中对照与速查</title>
      <link>https://blog.ifcalm.org/posts/datastruct/95-glossary/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/95-glossary/</guid>
      <description>按主题组织的数据结构与算法术语表，中英对照，每条附一句话精确定义与所在讲次。用于查漏、反查和考前速览。</description>
    </item>
    <item>
      <title>复杂度速查表与参考资料</title>
      <link>https://blog.ifcalm.org/posts/datastruct/96-resources/</link>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.ifcalm.org/posts/datastruct/96-resources/</guid>
      <description>一页纸的复杂度对照表（数据结构、排序、图算法）、选型决策树、Go 标准库对应关系，以及教材、公开课、经典论文与在线资源清单。</description>
    </item>
  </channel>
</rss>
