--- /dev/null
+# Project Information
+site_name: OI Wiki
+site_description: OI Wiki 是一个编程竞赛知识整合站点,提供有趣又实用的编程竞赛知识以及其他有帮助的内容,帮助广大编程竞赛爱好者更快更深入地学习编程竞赛
+site_author: OI Wiki Team
+site_url: https://oi-wiki.org
+strict: true
+
+# Repository
+repo_name: 'OI-wiki/OI-wiki'
+repo_url: 'https://github.com/OI-wiki/OI-wiki'
+edit_uri: 'blob/master/docs/'
+
+# Copyright
+copyright: 'Copyright © 2016 - 2019 OI Wiki Team'
+google_analytics:
+ - 'UA-124485594-1'
+ - 'auto'
+
+# Contents
+nav:
+ - 简介:
+ - Getting Started: index.md
+ - OI 赛事与赛制: intro/oi.md
+ - ICPC/CCPC 赛事与赛制: intro/icpc.md
+ - 学习路线: intro/roadmap.md
+ - 学习资源: intro/resources.md
+ - 常见错误: intro/common-mistakes.md
+ - 常见技巧: intro/common-tricks.md
+ - 非传统题: intro/non-trad.md
+ - 工具软件:
+ - 评测工具: intro/judgers.md
+ - 编辑工具:
+ - Vim: intro/editor/vim.md
+ - Emacs: intro/editor/emacs.md
+ - VS Code: intro/editor/vscode.md
+ - Atom: intro/editor/atom.md
+ - Eclipse: intro/editor/eclipse.md
+ - Notepad++: intro/editor/npp.md
+ - Dev-C++: intro/editor/devcpp.md
+ - WSL (Windows 10): intro/wsl.md
+ - Special Judge: intro/spj.md
+ - Testlib:
+ - Testlib 简介: intro/testlib/index.md
+ - 通用: intro/testlib/general.md
+ - Generator: intro/testlib/generator.md
+ - Validator: intro/testlib/validator.md
+ - Interactor: intro/testlib/interactor.md
+ - Checker: intro/testlib/checker.md
+ - OJ 工具: intro/oj-tool.md
+ - LaTeX 入门: intro/latex.md
+ - Docker 部署: intro/docker-deploy.md
+ - 关于本项目: intro/about.md
+ - 如何参与: intro/htc.md
+ - F.A.Q.: intro/faq.md
+ - 致谢: intro/thanks.md
+ - 语言基础:
+ - C++ 基础:
+ - Hello, World!: lang/helloworld.md
+ - C++ 语法基础: lang/basic.md
+ - 变量: lang/var.md
+ - 运算: lang/op.md
+ - 数组: lang/array.md
+ - 结构体: lang/struct.md
+ - 指针: lang/pointer.md
+ - 分支: lang/branch.md
+ - 循环: lang/loop.md
+ - 函数: lang/func.md
+ - 文件操作: lang/file-op.md
+ - C++ 标准库:
+ - C++ 标准库简介: lang/csl/index.md
+ - STL 容器:
+ - STL 容器简介: lang/csl/container.md
+ - 迭代器: lang/csl/iterator.md
+ - 序列式容器: lang/csl/sequence-container.md
+ - 关联式容器: lang/csl/associative-container.md
+ - 无序关联式容器: lang/csl/unordered-container.md
+ - 容器适配器: lang/csl/container-adapter.md
+ - STL 算法: lang/csl/algorithm.md
+ - bitset: lang/csl/bitset.md
+ - string: lang/csl/string.md
+ - C++ 进阶:
+ - 类: lang/class.md
+ - 新版 C++ 特性: lang/new.md
+ - pb_ds:
+ - pb_ds 简介: lang/pb-ds/index.md
+ - 堆: lang/pb-ds/pq.md
+ - 平衡树: lang/pb-ds/tree.md
+ - Pascal 转 C++ 急救: lang/pas-cpp.md
+ - Python 速成: lang/python.md
+ - Java 速成: lang/java.md
+ - 思想方法:
+ - 思想方法简介: basic/index.md
+ - 枚举: basic/enumerate.md
+ - 模拟: basic/simulate.md
+ - 递归 & 分治: basic/divide-and-conquer.md
+ - 贪心: basic/greedy.md
+ - 排序:
+ - 排序简介: basic/sort-intro.md
+ - 选择排序: basic/selection-sort.md
+ - 冒泡排序: basic/bubble-sort.md
+ - 插入排序: basic/insertion-sort.md
+ - 计数排序: basic/counting-sort.md
+ - 基数排序: basic/radix-sort.md
+ - 快速排序: basic/quick-sort.md
+ - 归并排序: basic/merge-sort.md
+ - 堆排序: basic/heap-sort.md
+ - 桶排序: basic/bucket-sort.md
+ - 希尔排序: basic/shell-sort.md
+ - 排序相关 STL: basic/stl-sort.md
+ - 排序应用: basic/use-of-sort.md
+ - 二分: basic/binary.md
+ - 倍增: basic/binary-acc.md
+ - 构造: basic/construction.md
+ - 前缀和 & 差分: basic/prefix-sum.md
+ - 搜索:
+ - 搜索部分简介: search/index.md
+ - DFS(搜索): search/dfs.md
+ - BFS(搜索): search/bfs.md
+ - 双向搜索: search/bidirectional.md
+ - 启发式搜索: search/heuristic.md
+ - A*: search/astar.md
+ - 迭代加深搜索: search/iterative.md
+ - IDA*: search/idastar.md
+ - 回溯法: search/backtracking.md
+ - Dancing Links: search/dlx.md
+ - 优化: search/opt.md
+ - 动态规划:
+ - 动态规划部分简介: dp/index.md
+ - 记忆化搜索: dp/memo.md
+ - 背包 DP: dp/knapsack.md
+ - 区间 DP: dp/interval.md
+ - DAG 上的 DP: dp/dag.md
+ - 树形 DP: dp/tree.md
+ - 状压 DP: dp/state.md
+ - 数位 DP: dp/number.md
+ - 插头 DP: dp/plug.md
+ - 计数 DP: dp/count.md
+ - DP 优化:
+ - 二进制分组解多重背包: dp/opt/binary-knapsack.md
+ - 单调队列/单调栈优化: dp/opt/monotonous-queue-stack.md
+ - 斜率优化: dp/opt/slope.md
+ - 四边形不等式优化: dp/opt/quadrangle.md
+ - 状态设计优化: dp/opt/state.md
+ - 其它 DP 方法: dp/misc.md
+ - 字符串:
+ - 字符串部分简介: string/index.md
+ - 标准库: string/lib-func.md
+ - 字符串匹配: string/match.md
+ - 哈希: string/hash.md
+ - 前缀函数与 KMP 算法: string/kmp.md
+ - Z 函数(扩展 KMP): string/z-func.md
+ - 字典树 (Trie): string/trie.md
+ - 回文自动机: string/pam.md
+ - 后缀数组 (SA): string/sa.md
+ - AC 自动机: string/ac-automaton.md
+ - 后缀自动机 (SAM): string/sam.md
+ - 后缀树: string/suffix-tree.md
+ - Manacher: string/manacher.md
+ - 最小表示法: string/minimal-string.md
+ - Lyndon 分解: string/lyndon.md
+ - 数学:
+ - 数学部分简介: math/index.md
+ - 基础知识:
+ - 向量: math/vector.md
+ - 复数: math/complex.md
+ - 极坐标系: math/polar-coordinate.md
+ - 位运算: math/bit.md
+ - 快速幂: math/quick-pow.md
+ - 数论与数论函数:
+ - 整除及其性质:
+ - 素数: math/prime.md
+ - 最大公约数: math/gcd.md
+ - 欧拉函数: math/euler.md
+ - 筛法: math/sieve.md
+ - 欧拉定理 & 费马小定理: math/fermat.md
+ - 类欧几里德算法: math/euclidean.md
+ - 同余与同余方程:
+ - 裴蜀定理: math/bezouts.md
+ - 乘法逆元: math/inverse.md
+ - 线性同余方程: math/linear-equation.md
+ - 中国剩余定理: math/crt.md
+ - BSGS: math/bsgs.md
+ - 原根: math/primitive-root.md
+ - 卢卡斯定理: math/lucas.md
+ - 进位制: math/base.md
+ - 数论函数:
+ - 莫比乌斯反演: math/mobius.md
+ - 杜教筛: math/du.md
+ - Min_25 筛: math/min-25.md
+ - 多项式:
+ - 多项式部分简介: math/poly/intro.md
+ - 拉格朗日插值: math/poly/lagrange.md
+ - 快速傅里叶变换: math/poly/fft.md
+ - 快速数论变换: math/poly/ntt.md
+ - 快速沃尔什变换: math/poly/fwt.md
+ - 多项式求逆: math/poly/inv.md
+ - 多项式开方: math/poly/sqrt.md
+ - 多项式除法|取模: math/poly/div-mod.md
+ - 多项式对数函数|指数函数: math/poly/ln-exp.md
+ - 多项式牛顿迭代: math/poly/newton.md
+ - 多项式多点求值|快速插值: math/poly/multipoint-eval-interpolation.md
+ - 多项式三角函数: math/poly/tri-func.md
+ - 多项式反三角函数: math/poly/inv-tri-func.md
+ - 线性代数:
+ - 矩阵: math/matrix.md
+ - 高斯消元: math/gauss.md
+ - 线性基: math/basis.md
+ - 抽象代数:
+ - 置换群: math/permutation-group.md
+ - 组合数学:
+ - 排列组合: math/combination.md
+ - 卡特兰数: math/catalan.md
+ - 斯特林数: math/stirling.md
+ - 康托展开: math/cantor.md
+ - 容斥原理: math/inclusion-exclusion-principle.md
+ - 抽屉原理: math/drawer-principle.md
+ - 概率 & 期望: math/expectation.md
+ - 线性规划:
+ - 线性规划简介: math/linear-programming.md
+ - 单纯形算法: math/simplex.md
+ - 博弈论:
+ - 博弈论简介: math/game-theory.md
+ - 常用算法与应试技巧:
+ - 牛顿迭代法: math/newton.md
+ - 数值积分: math/integral.md
+ - 高精度计算:
+ - 高精度概述: math/bignum.md
+ - 分段打表: math/dictionary.md
+ - 斐波那契数列: math/fibonacci.md
+ - 数据结构:
+ - 数据结构部分简介: ds/index.md
+ - 栈: ds/stack.md
+ - 队列: ds/queue.md
+ - 链表: ds/linked-list.md
+ - 哈希表: ds/hash.md
+ - 并查集: ds/dsu.md
+ - 堆:
+ - 堆简介: ds/heap.md
+ - 二叉堆: ds/binary-heap.md
+ - 配对堆: ds/pairing-heap.md
+ - 左偏树: ds/leftist-tree.md
+ - 块状数据结构:
+ - 分块思想: ds/decompose.md
+ - 树分块: ds/tree-decompose.md
+ - 块状链表: ds/block-list.md
+ - 块状数组: ds/block-array.md
+ - Sqrt Tree: ds/sqrt-tree.md
+ - 单调栈: ds/monotonous-stack.md
+ - 单调队列: ds/monotonous-queue.md
+ - ST 表: ds/sparse-table.md
+ - 树状数组: ds/bit.md
+ - 线段树: ds/seg.md
+ - 线段树 & 区间历史最值: ds/seg-beats.md
+ - 划分树: ds/dividing.md
+ - 二叉搜索树 & 平衡树:
+ - 二叉搜索树简介: ds/bst.md
+ - Treap: ds/treap.md
+ - Splay: ds/splay.md
+ - WBLT: ds/wblt.md
+ - Size Balanced Tree: ds/sbt.md
+ - AVL 树: ds/avl.md
+ - 替罪羊树: ds/sgt.md
+ - 笛卡尔树: ds/cartesian-tree.md
+ - 可持久化数据结构:
+ - 可持久化数据结构简介: ds/persistent.md
+ - 可持久化线段树: ds/persistent-seg.md
+ - 可持久化块状数组: ds/persistent-block-array.md
+ - 可持久化平衡树: ds/persistent-balanced.md
+ - 可持久化字典树: ds/persistent-trie.md
+ - 可持久化可并堆: ds/persistent-heap.md
+ - 树套树:
+ - 线段树套线段树: ds/seg-in-seg.md
+ - 平衡树套线段树: ds/seg-in-balanced.md
+ - 线段树套平衡树: ds/balanced-in-seg.md
+ - 树状数组套主席树: ds/persistent-in-bit.md
+ - K-D Tree: ds/kdt.md
+ - 珂朵莉树: ds/odt.md
+ - 动态树:
+ - Link Cut Tree: ds/lct.md
+ - Euler Tour Tree: ds/ett.md
+ - Top Tree: ds/top-tree.md
+ - 析合树: ds/divide-combine.md
+ - 图论:
+ - 图论部分简介: graph/index.md
+ - 图论基础: graph/basic.md
+ - DFS(图论): graph/dfs.md
+ - BFS(图论): graph/bfs.md
+ - 树上问题:
+ - 树基础: graph/tree-basic.md
+ - 最近公共祖先: graph/lca.md
+ - 树的其他问题: graph/tree-misc.md
+ - 树哈希: graph/tree-hash.md
+ - 树链剖分: graph/hld.md
+ - 树分治: graph/tree-divide.md
+ - 动态树分治: graph/dynamic-tree-divide.md
+ - 虚树: graph/virtual-tree.md
+ - 树上启发式合并: graph/dsu-on-tree.md
+ - 矩阵树定理: graph/matrix-tree.md
+ - 有向无环图: graph/dag.md
+ - 拓扑排序: graph/topo.md
+ - 最小生成树: graph/mst.md
+ - 最小树形图: graph/mdst.md
+ - 最短路: graph/shortest-path.md
+ - 差分约束: graph/diff-constraints.md
+ - k 短路: graph/kth-path.md
+ - 连通性相关:
+ - 强连通分量: graph/scc.md
+ - 双连通分量: graph/bcc.md
+ - 割点和桥: graph/bridge.md
+ - 2-SAT: graph/2-sat.md
+ - 欧拉图: graph/euler.md
+ - 哈密顿图: graph/hamilton.md
+ - 二分图: graph/bi-graph.md
+ - 最小环: graph/min-circle.md
+ - 平面图: graph/planar.md
+ - 图的着色: graph/color.md
+ - 网络流:
+ - 网络流简介: graph/flow.md
+ - 拆点: graph/flow/node.md
+ - 最大流: graph/flow/max-flow.md
+ - 最小割: graph/flow/min-cut.md
+ - 费用流: graph/flow/min-cost.md
+ - 上下界网络流: graph/flow/bound.md
+ - Prufer 序列: graph/prufer.md
+ - 图论杂项: graph/misc.md
+ - 计算几何:
+ - 计算几何部分简介: geometry/index.md
+ - 二维计算几何基础: geometry/2d.md
+ - 三维计算几何基础: geometry/3d.md
+ - 距离: geometry/distance.md
+ - Pick 定理: geometry/pick.md
+ - 三角剖分: geometry/triangulation.md
+ - 凸包: geometry/convex-hull.md
+ - 扫描线: geometry/scanning.md
+ - 旋转卡壳: geometry/rotating-calipers.md
+ - 半平面交: geometry/half-plane.md
+ - 平面最近点对: geometry/nearest-points.md
+ - 随机增量法: geometry/random-incremental.md
+ - 计算几何杂项: geometry/misc.md
+ - 杂项:
+ - 杂项简介: misc/index.md
+ - 读入、输出优化: misc/io.md
+ - 复杂度: misc/complexity.md
+ - 离散化: misc/discrete.md
+ - 离线算法:
+ - 离线算法简介: misc/offline.md
+ - CDQ 分治: misc/cdq-divide.md
+ - 整体二分: misc/parallel-binsearch.md
+ - 莫队算法: misc/mo-algo.md
+ - 分数规划: misc/frac-programming.md
+ - 随机化:
+ - 随机函数: misc/random.md
+ - 爬山算法: misc/hill-climbing.md
+ - 模拟退火: misc/simulated-annealing.md
+ - 悬线法: misc/largest-matrix.md
+ - 计算理论基础: misc/cc-basic.md
+ - 字节顺序: misc/endianness.md
+ - 约瑟夫问题: misc/josephus.md
+ - Stern-Brocot 树与 Farey 序列: misc/stern-brocot.md
+ - 格雷码: misc/gray-code.md
+ - 表达式求值: misc/expression.md
+ - 专题:
+ - RMQ: topic/rmq.md
+
+# Theme
+theme:
+ name: 'material'
+ language: 'zh'
+ palette:
+ primary: 'white'
+ accent: 'red'
+ include_search_page: false
+ search_index_only: true
+ favicon: 'favicon.ico'
+
+ logo:
+ icon: 'school'
+ feature:
+ tabs: true
+ font:
+ text: 'Fira Sans'
+ code: 'Fira Mono'
+
+# Customization
+extra:
+ search:
+ language: 'jp'
+ disqus: 'OI-Wiki'
+ copyright: '<a href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh">CC BY-SA 4.0</a> 和 <a href="https://github.com/zTrix/sata-license">SATA</a>'
+ pagetime: 'on'
+ manifest: 'manifest.webmanifest'
+ githash: ''
+
+extra_javascript:
+ - '_static/js/extra.js?v=15'
+ - 'https://cdnjs.loli.net/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML'
+
+
+extra_css:
+ - '_static/css/extra.css?v=12'
+
+# Extensions
+markdown_extensions:
+ - admonition
+ - codehilite:
+ guess_lang: false
+ linenums: true
+ - def_list
+ - footnotes
+ - meta
+ - toc:
+ permalink: true
+ - pymdownx.arithmatex
+ - pymdownx.caret
+ - pymdownx.critic
+ - pymdownx.details
+ - pymdownx.emoji:
+ emoji_generator: !!python/name:pymdownx.emoji.to_svg
+ - pymdownx.inlinehilite
+ - pymdownx.keys
+ - pymdownx.magiclink
+ - pymdownx.mark
+ - pymdownx.progressbar
+ - pymdownx.smartsymbols
+ - pymdownx.superfences:
+ custom_fences:
+ - name: math
+ class: arithmatex
+ format: !!python/name:pymdownx.arithmatex.fence_mathjax_format
+ - pymdownx.tasklist:
+ custom_checkbox: true
+ - pymdownx.tilde