From d0cf7cb21a8bf21dc5911331cf0a0c33063f985b Mon Sep 17 00:00:00 2001 From: 24OI-bot <15963390+24OI-bot@users.noreply.github.com> Date: Tue, 6 Aug 2019 11:13:10 -0400 Subject: [PATCH] style: format markdown files with remark-lint --- docs/basic/binary-acc.md | 4 +- docs/basic/binary.md | 4 +- docs/basic/bucket-sort.md | 2 +- docs/basic/construction.md | 8 +- docs/basic/divide-and-conquer.md | 6 +- docs/basic/greedy.md | 6 +- docs/basic/heap-sort.md | 2 +- docs/basic/merge-sort.md | 6 +- docs/basic/prefix-sum.md | 26 ++--- docs/basic/quick-sort.md | 10 +- docs/basic/radix-sort.md | 4 +- docs/basic/simulate.md | 4 +- docs/basic/stl-sort.md | 10 +- docs/basic/use-of-sort.md | 2 +- docs/dp/dag.md | 2 +- docs/dp/index.md | 20 ++-- docs/dp/interval.md | 6 +- docs/dp/knapsack.md | 10 +- docs/dp/memo.md | 6 +- docs/dp/number.md | 16 +-- docs/dp/opt/binary-knapsack.md | 2 +- docs/dp/opt/monotonous-queue-stack.md | 8 +- docs/dp/opt/quadrangle.md | 8 +- docs/dp/opt/slope.md | 18 ++-- docs/dp/state.md | 12 +-- docs/dp/tree.md | 8 +- docs/ds/balanced-in-seg.md | 4 +- docs/ds/bit.md | 10 +- docs/ds/block-array.md | 14 +-- docs/ds/block-list.md | 2 +- docs/ds/cartesian-tree.md | 2 +- docs/ds/divide-combine.md | 4 +- docs/ds/dividing.md | 2 +- docs/ds/dsu.md | 18 ++-- docs/ds/hash.md | 2 +- docs/ds/index.md | 4 +- docs/ds/kdt.md | 16 +-- docs/ds/lct.md | 28 ++--- docs/ds/leftist-tree.md | 18 ++-- docs/ds/monotonous-queue.md | 2 +- docs/ds/odt.md | 12 +-- docs/ds/pairing-heap.md | 12 +-- docs/ds/persistent-balanced.md | 10 +- docs/ds/persistent-heap.md | 2 +- docs/ds/persistent-in-bit.md | 4 +- docs/ds/persistent-seg.md | 8 +- docs/ds/persistent.md | 2 +- docs/ds/queue.md | 4 +- docs/ds/seg-in-seg.md | 2 +- docs/ds/seg.md | 10 +- docs/ds/sparse-table.md | 16 +-- docs/ds/splay.md | 18 ++-- docs/ds/treap.md | 10 +- docs/ds/tree-decompose.md | 10 +- docs/geometry/2d.md | 10 +- docs/geometry/convex-hull.md | 10 +- docs/geometry/distance.md | 14 +-- docs/geometry/half-plane.md | 6 +- docs/geometry/index.md | 2 +- docs/geometry/nearest-points.md | 14 +-- docs/geometry/pick.md | 2 +- docs/geometry/random-incremental.md | 8 +- docs/geometry/scanning.md | 14 +-- docs/graph/2-sat.md | 8 +- docs/graph/basic.md | 14 +-- docs/graph/bcc.md | 6 +- docs/graph/bfs.md | 14 +-- docs/graph/bi-graph.md | 4 +- docs/graph/bridge.md | 6 +- docs/graph/dag.md | 6 +- docs/graph/dfs.md | 6 +- docs/graph/diff-constraints.md | 12 +-- docs/graph/dsu-on-tree.md | 10 +- docs/graph/euler.md | 4 +- docs/graph/flow.md | 2 +- docs/graph/flow/max-flow.md | 2 +- docs/graph/flow/min-cost.md | 14 +-- docs/graph/flow/min-cut.md | 8 +- docs/graph/flow/node.md | 4 +- docs/graph/hld.md | 16 +-- docs/graph/index.md | 2 +- docs/graph/kth-path.md | 4 +- docs/graph/lca.md | 16 +-- docs/graph/matrix-tree.md | 4 +- docs/graph/mst.md | 8 +- docs/graph/prufer.md | 10 +- docs/graph/scc.md | 6 +- docs/graph/shortest-path.md | 4 +- docs/graph/topo.md | 8 +- docs/graph/tree-hash.md | 2 +- docs/graph/tree-misc.md | 4 +- docs/index.md | 10 +- docs/intro/about.md | 6 +- docs/intro/common-tricks.md | 2 +- docs/intro/editor/atom.md | 2 +- docs/intro/editor/emacs.md | 2 +- docs/intro/editor/vim.md | 10 +- docs/intro/editor/vscode.md | 6 +- docs/intro/faq.md | 52 ++++----- docs/intro/icpc.md | 14 +-- docs/intro/judgers.md | 14 +-- docs/intro/non-trad.md | 10 +- docs/intro/oi.md | 36 +++---- docs/intro/oj-tool.md | 12 +-- docs/intro/resources.md | 162 ++++++++++++++--------------- docs/intro/spj.md | 10 +- docs/intro/testlib/checker.md | 6 +- docs/intro/testlib/generator.md | 6 +- docs/intro/testlib/index.md | 12 +-- docs/intro/testlib/interactor.md | 4 +- docs/intro/testlib/validator.md | 8 +- docs/intro/wsl.md | 38 +++---- docs/lang/csl/bitset.md | 16 +-- docs/lang/helloworld.md | 4 +- docs/lang/pb-ds/index.md | 2 +- docs/lang/pb-ds/pq.md | 2 +- docs/math/bezouts.md | 2 +- docs/math/bignum.md | 18 ++-- docs/math/bit.md | 4 +- docs/math/bsgs.md | 16 +-- docs/math/complex.md | 2 +- docs/math/crt.md | 10 +- docs/math/dictionary.md | 10 +- docs/math/euclidean.md | 2 +- docs/math/euler.md | 6 +- docs/math/expectation.md | 4 +- docs/math/fermat.md | 14 +-- docs/math/fibonacci.md | 18 ++-- docs/math/game-theory.md | 4 +- docs/math/gauss.md | 2 +- docs/math/gcd.md | 2 +- docs/math/inclusion-exclusion-principle.md | 2 +- docs/math/inverse.md | 16 +-- docs/math/linear-equation.md | 2 +- docs/math/linear-programming.md | 2 +- docs/math/lucas.md | 8 +- docs/math/matrix.md | 12 +-- docs/math/min-25.md | 6 +- docs/math/mobius.md | 14 +-- docs/math/newton.md | 4 +- docs/math/poly/div-mod.md | 2 +- docs/math/poly/fft.md | 10 +- docs/math/poly/fwt.md | 4 +- docs/math/poly/intro.md | 4 +- docs/math/poly/inv.md | 4 +- docs/math/poly/lagrange.md | 2 +- docs/math/poly/ln-exp.md | 4 +- docs/math/poly/newton.md | 6 +- docs/math/poly/ntt.md | 6 +- docs/math/poly/sqrt.md | 4 +- docs/math/poly/tri-func.md | 2 +- docs/math/prime.md | 18 ++-- docs/math/quick-pow.md | 28 ++--- docs/math/simplex.md | 10 +- docs/math/stirling.md | 6 +- docs/misc/discrete.md | 2 +- docs/misc/expression.md | 10 +- docs/misc/frac-programming.md | 8 +- docs/misc/gray-code.md | 4 +- docs/misc/hill-climbing.md | 6 +- docs/misc/io.md | 6 +- docs/misc/josephus.md | 2 +- docs/misc/largest-matrix.md | 6 +- docs/misc/magic.md | 18 ++-- docs/misc/mo-algo.md | 10 +- docs/misc/parallel-binsearch.md | 6 +- docs/misc/random.md | 6 +- docs/misc/simulated-annealing.md | 12 +-- docs/misc/stern-brocot.md | 2 +- docs/search/astar.md | 8 +- docs/search/bfs.md | 2 +- docs/search/dfs.md | 4 +- docs/search/idastar.md | 4 +- docs/search/index.md | 16 +-- docs/search/opt.md | 2 +- docs/string/ac-automaton.md | 8 +- docs/string/hash.md | 2 +- docs/string/kmp.md | 20 ++-- docs/string/lyndon.md | 4 +- docs/string/manacher.md | 8 +- docs/string/match.md | 4 +- docs/string/sa.md | 78 +++++++------- docs/string/sam.md | 14 +-- docs/string/trie.md | 2 +- docs/string/z-func.md | 20 ++-- 185 files changed, 885 insertions(+), 885 deletions(-) diff --git a/docs/basic/binary-acc.md b/docs/basic/binary-acc.md index 53f42343..45547947 100644 --- a/docs/basic/binary-acc.md +++ b/docs/basic/binary-acc.md @@ -6,8 +6,8 @@ author: Ir1d, ShadowsEpic, Fomalhauthmj, siger-young, MingqiHuang, Xeonacid, hsf RMQ 是英文 Range Maximum/Minimum Query 的缩写,表示区间最大(最小)值。 -解决 RMQ 问题的主要方法有两种,分别是 ST 表和线段树,具体请参见[ST 表](/ds/sprase-table)页面和[线段树](/ds/segment)页面。 +解决 RMQ 问题的主要方法有两种,分别是 ST 表和线段树,具体请参见 [ST 表](/ds/sprase-table) 页面和 [线段树](/ds/segment) 页面。 ## 树上倍增求 LCA -具体请参见[最近公共祖先](/graph/lca/#_5)页面。 +具体请参见 [最近公共祖先](/graph/lca/#_5) 页面。 diff --git a/docs/basic/binary.md b/docs/basic/binary.md index 7a25cd5b..607f7be3 100644 --- a/docs/basic/binary.md +++ b/docs/basic/binary.md @@ -52,13 +52,13 @@ int binary_search(int start, int end, int key) { 请注意,必须是有序数组,否则答案是错误的。 -关于具体使用方法,请参见[STL 页面](/ds/stl/)。 +关于具体使用方法,请参见 [STL 页面](/ds/stl/) 。 ### 二分答案 解题的时候往往会考虑枚举答案然后检验枚举的值是否正确。如果我们把这里的枚举换成二分,就变成了“二分答案”。 -来看一看一道例题[Luogu P1873 砍树](https://www.luogu.org/problemnew/show/P1873),我们可以在 1 到 1000000000(10 亿)中枚举答案,但是这种朴素写法肯定拿不到满分,因为从 1 跑到 10 亿太耗时间。我们可以对答案进行 1 到 10 亿的二分,其中,每次都对其进行检查可行性(一般都是使用贪心法)。 **这就是二分答案。** +来看一看一道例题 [Luogu P1873 砍树](https://www.luogu.org/problemnew/show/P1873) ,我们可以在 1 到 1000000000(10 亿)中枚举答案,但是这种朴素写法肯定拿不到满分,因为从 1 跑到 10 亿太耗时间。我们可以对答案进行 1 到 10 亿的二分,其中,每次都对其进行检查可行性(一般都是使用贪心法)。 **这就是二分答案。** 下面就是例题的参考答案。 diff --git a/docs/basic/bucket-sort.md b/docs/basic/bucket-sort.md index 36a6fe01..ef617d85 100644 --- a/docs/basic/bucket-sort.md +++ b/docs/basic/bucket-sort.md @@ -7,4 +7,4 @@ 算法流程就是记录每一个数出现了多少次,然后从小到大依次输出。 -一般考虑的是某一范围内的整数,但是计数排序也可以和[离散化](/misc/discrete)一起使用,来对浮点数、大整数进行排序。 +一般考虑的是某一范围内的整数,但是计数排序也可以和 [离散化](/misc/discrete) 一起使用,来对浮点数、大整数进行排序。 diff --git a/docs/basic/construction.md b/docs/basic/construction.md index 19bba71b..fcfa0b6c 100644 --- a/docs/basic/construction.md +++ b/docs/basic/construction.md @@ -14,7 +14,7 @@ #### Problem -[Vladik and fractions](http://codeforces.com/problemset/problem/743/C) + [Vladik and fractions](http://codeforces.com/problemset/problem/743/C) 题目大意:构造一组 $x,y,z$ ,使得对于给定的 $n$ ,满足 $\dfrac{1}{x}+\dfrac{1}{y}+\dfrac{1}{z}=\dfrac{2}{n}$ @@ -30,7 +30,7 @@ #### Problem -[Luogu P3599 Koishi Loves Construction](https://www.luogu.org/problemnew/show/P3599) + [Luogu P3599 Koishi Loves Construction](https://www.luogu.org/problemnew/show/P3599) #### Solution @@ -74,7 +74,7 @@ $$ #### Problem -[AtCoder Grand Contest 032 B](https://atcoder.jp/contests/agc032/tasks/agc032_b) + [AtCoder Grand Contest 032 B](https://atcoder.jp/contests/agc032/tasks/agc032_b) #### Solution @@ -94,7 +94,7 @@ $$ #### Problem -[BZOJ4971:\[Lydsy1708 月赛\]记忆中的背包](https://www.lydsy.com/JudgeOnline/problem.php?id=4971) + [BZOJ4971:\[Lydsy1708 月赛\]记忆中的背包](https://www.lydsy.com/JudgeOnline/problem.php?id=4971) #### Solution diff --git a/docs/basic/divide-and-conquer.md b/docs/basic/divide-and-conquer.md index 06d56657..8d697b72 100644 --- a/docs/basic/divide-and-conquer.md +++ b/docs/basic/divide-and-conquer.md @@ -171,13 +171,13 @@ int count(TreeNode node, int sum) { 总结下,PathSum 函数提供的二叉树遍历框架,在遍历中对每个节点调用 count 函数,看出先序遍历了吗(这道题什么序都是一样的);count 函数也是一个二叉树遍历,用于寻找以该节点开头的目标值路径。好好体会吧! -LeetCode 有递归专题练习,[点这里去做题](https://leetcode.com/explore/learn/card/recursion-i/) +LeetCode 有递归专题练习, [点这里去做题](https://leetcode.com/explore/learn/card/recursion-i/) ### 递归优化 比较 naive 的递归实现可能递归次数太多,容易超时。 -怎么优化呢?详见[搜索优化](/search/optimization)和[记忆化搜索](/dp/memo/)。 +怎么优化呢?详见 [搜索优化](/search/optimization) 和 [记忆化搜索](/dp/memo/) 。 ## 分治算法 @@ -202,4 +202,4 @@ void merge_sort(一个数组) { 好了,这个算法也就这样了,完全没有任何难度。记住之前说的,相信函数的能力,传给他半个数组,那么这半个数组就已经被排好了。而且你会发现这不就是个二叉树遍历模板吗?为什么是后序遍历?因为我们分治算法的套路是 **分解 -> 解决(触底)-> 合并(回溯)** 啊,先左右分解,再处理合并,回溯就是在退栈,就相当于后序遍历了。至于 `merge` 函数,参考两个有序链表的合并,简直一模一样。 -LeetCode 上有分治算法的专项练习,[点这里去做题](https://leetcode.com/tag/divide-and-conquer/) +LeetCode 上有分治算法的专项练习, [点这里去做题](https://leetcode.com/tag/divide-and-conquer/) diff --git a/docs/basic/greedy.md b/docs/basic/greedy.md index 29932c60..f2c7e3df 100644 --- a/docs/basic/greedy.md +++ b/docs/basic/greedy.md @@ -23,9 +23,9 @@ 用排序法常见的情况是输入一个包含几个(一般一到两个)权值的数组,通过排序然后遍历模拟计算的方法求出最优值。 -有些题的排序方法非常显然,如[Luogu P1209\[USACO1.3\]修理牛棚 Barn Repair](https://www.luogu.org/problemnew/show/P1209)就是将输入数组差分后排序模拟求值。 +有些题的排序方法非常显然,如 [Luogu P1209\[USACO1.3\]修理牛棚 Barn Repair](https://www.luogu.org/problemnew/show/P1209) 就是将输入数组差分后排序模拟求值。 -然而有些时候很难直接一下子看出排序方法,比如[NOIP 2012 国王游戏](https://vijos.org/p/1779)就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个~~众所周知的~~常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 +然而有些时候很难直接一下子看出排序方法,比如 [NOIP 2012 国王游戏](https://vijos.org/p/1779) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个~~众所周知的~~常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 ```cpp struct { @@ -87,7 +87,7 @@ struct uv { ``` ~~看上去是不是很简单呢(这题高精度卡常……)~~ -如果看懂了就可以尝试下一道类似的题:[Luogu P2123 皇后游戏](https://www.luogu.org/problemnew/show/P2123) +如果看懂了就可以尝试下一道类似的题: [Luogu P2123 皇后游戏](https://www.luogu.org/problemnew/show/P2123) ## 后悔法 diff --git a/docs/basic/heap-sort.md b/docs/basic/heap-sort.md index 770b50ed..d009875e 100644 --- a/docs/basic/heap-sort.md +++ b/docs/basic/heap-sort.md @@ -1,4 +1,4 @@ -对所有记录建[堆](/ds/heap/) +对所有记录建 [堆](/ds/heap/) 每次取出堆顶元素,就可以依次得到排好序的序列。 diff --git a/docs/basic/merge-sort.md b/docs/basic/merge-sort.md index 8ca9c3fd..477a87de 100644 --- a/docs/basic/merge-sort.md +++ b/docs/basic/merge-sort.md @@ -1,6 +1,6 @@ ## 算法 -归并排序是一种采用了[分治](/basic/divide-and-conquer)思想的排序算法,其本质是一种[CDQ 分治](/misc/cdq-divide)。 +归并排序是一种采用了 [分治](/basic/divide-and-conquer) 思想的排序算法,其本质是一种 [CDQ 分治](/misc/cdq-divide) 。 归并排序分为三个过程: @@ -77,7 +77,7 @@ public class Merge { 所谓逆序对,就是满足 $a_{i} > a_{j}$ 且 $i < j$ 的数对 $(i, j)$ 。 -可以用[树状数组](/ds/bit)、[线段树](/ds/segment/)等数据结构来求,也可以用归并排序来求。 +可以用 [树状数组](/ds/bit) 、 [线段树](/ds/segment/) 等数据结构来求,也可以用归并排序来求。 具体来说,上面归并排序中间注释掉的 `ans += mid - p` 就是在统计逆序对个数。 @@ -87,4 +87,4 @@ public class Merge { ## 参考 - + diff --git a/docs/basic/prefix-sum.md b/docs/basic/prefix-sum.md index 10883dbd..d2f389ca 100644 --- a/docs/basic/prefix-sum.md +++ b/docs/basic/prefix-sum.md @@ -53,10 +53,10 @@ int main() { ### 习题 -- [洛谷 U53525 前缀和(例题)](https://www.luogu.org/problemnew/show/U53525) -- [洛谷 U69096 前缀和的逆](https://www.luogu.org/problemnew/show/U69096) -- [AT2412 最大の和](https://www.luogu.org/problemnew/show/AT2412) -- [洛谷 P3131\[USACO16JAN\]子共七 Subsequences Summing to Sevens](https://www.luogu.org/problemnew/show/P3131) +- [洛谷 U53525 前缀和(例题)](https://www.luogu.org/problemnew/show/U53525) +- [洛谷 U69096 前缀和的逆](https://www.luogu.org/problemnew/show/U69096) +- [AT2412 最大の和](https://www.luogu.org/problemnew/show/AT2412) +- [洛谷 P3131\[USACO16JAN\]子共七 Subsequences Summing to Sevens](https://www.luogu.org/problemnew/show/P3131) ### 参考 @@ -90,7 +90,7 @@ int main() { 第二个问题就是如何应用,譬如求 $(x1,y1) - (x2,y2)$ 子矩阵的和。 那么,根据类似的思考过程,易得答案为 $sum_{x2,y2} - sum_{x1 - 1,y2} - sum_{x2,y1 - 1} + sum_{x1 - 1,y1 - 1}$ 。 -下面给出[洛谷 P1387 最大正方形](https://www.luogu.org/problemnew/show/P1387)这道题目的参考程序来帮助大家理解二维前缀和。 +下面给出 [洛谷 P1387 最大正方形](https://www.luogu.org/problemnew/show/P1387) 这道题目的参考程序来帮助大家理解二维前缀和。 ```cpp #include @@ -131,8 +131,8 @@ int main() { ### 习题 -- [CodeVS 1373. 射命丸文](http://codevs.cn/problem/1373/) -- [洛谷 P1387 最大正方形](https://www.luogu.org/problemnew/show/P1387) +- [CodeVS 1373. 射命丸文](http://codevs.cn/problem/1373/) +- [洛谷 P1387 最大正方形](https://www.luogu.org/problemnew/show/P1387) ### 基于 DP 计算高维前缀和 @@ -156,12 +156,12 @@ int main() { 然后若是点权, $x,y$ 路径上的和为 $sum_x + sum_y - sum_{lca} - sum_{fa_{lca}}$ ; 否则若是边权, $x,y$ 路径上的和为 $sum_x + sum_y - 2sum_{lca}$ 。 -至于 lca 的求法请移步[最近公共祖先](/graph/lca/)。 +至于 lca 的求法请移步 [最近公共祖先](/graph/lca/) 。 ### 习题 -- [LOJ 10134.Dis](https://loj.ac/problem/10134) -- [LOJ 2491. 求和](https://loj.ac/problem/2491) +- [LOJ 10134.Dis](https://loj.ac/problem/10134) +- [LOJ 2491. 求和](https://loj.ac/problem/2491) ## 差分 @@ -175,8 +175,8 @@ int main() { ### 习题 -- [树状数组 3:区间修改,区间查询](https://loj.ac/problem/132) -- [P3397 地毯](https://www.luogu.org/problemnew/show/P3397) +- [树状数组 3:区间修改,区间查询](https://loj.ac/problem/132) +- [P3397 地毯](https://www.luogu.org/problemnew/show/P3397) ## 树上差分 @@ -193,4 +193,4 @@ int main() { ### 习题 -- [洛谷 3128. 最大流](https://www.luogu.org/problemnew/show/P3128) +- [洛谷 3128. 最大流](https://www.luogu.org/problemnew/show/P3128) diff --git a/docs/basic/quick-sort.md b/docs/basic/quick-sort.md index 790e3308..29b2a66a 100644 --- a/docs/basic/quick-sort.md +++ b/docs/basic/quick-sort.md @@ -1,6 +1,6 @@ ## 算法 -快速排序是[分治](/basic/divide-and-conquer)地来将一个数组排序。 +快速排序是 [分治](/basic/divide-and-conquer) 地来将一个数组排序。 快速排序分为三个过程: @@ -24,7 +24,7 @@ 一般我们说的快速排序的时间复杂度是平均为 $O(n\log n)$ ,最坏是 $O(n^2)$ ,实践中几乎不可能达到最坏情况。且因为快速排序的内存访问遵循局部性原理,多数情况下快速排序的表现大幅优于堆排序等其他复杂度为 $O(n \log n)$ 的排序算法。 -其实,在选择 m 的过程中使用[Median of Medians](https://en.wikipedia.org/wiki/Median_of_medians)算法,就可以保证最坏时间复杂度为 $O(n\log n)$ ,但是由于其过于复杂,实践中一般不使用。 +其实,在选择 m 的过程中使用 [Median of Medians](https://en.wikipedia.org/wiki/Median_of_medians) 算法,就可以保证最坏时间复杂度为 $O(n\log n)$ ,但是由于其过于复杂,实践中一般不使用。 ## 线性找第 k 大的数 @@ -36,8 +36,8 @@ ### 参考 - + - + - + diff --git a/docs/basic/radix-sort.md b/docs/basic/radix-sort.md index ee612730..20bccb9a 100644 --- a/docs/basic/radix-sort.md +++ b/docs/basic/radix-sort.md @@ -13,5 +13,5 @@ ### 参考 -ATool 的排序演示动画 - + ATool 的排序演示动画 + diff --git a/docs/basic/simulate.md b/docs/basic/simulate.md index 860829b4..7135f3d5 100644 --- a/docs/basic/simulate.md +++ b/docs/basic/simulate.md @@ -1,6 +1,6 @@ -模拟。顾名思义,就是用计算机来模拟题目中要求的操作,比如 NOIP 2014 的[生活大爆炸版石头剪刀布](https://loj.ac/problem/2498),只需要按照题面的意思来写就可以了。 +模拟。顾名思义,就是用计算机来模拟题目中要求的操作,比如 NOIP 2014 的 [生活大爆炸版石头剪刀布](https://loj.ac/problem/2498) ,只需要按照题面的意思来写就可以了。 -当然,模拟一般也不是很好写,参见经典题目[魔兽世界](http://bailian.openjudge.cn/practice/3750/)和[猪国杀](https://www.lydsy.com/JudgeOnline/problem.php?id=1972)。 +当然,模拟一般也不是很好写,参见经典题目 [魔兽世界](http://bailian.openjudge.cn/practice/3750/) 和 [猪国杀](https://www.lydsy.com/JudgeOnline/problem.php?id=1972) 。 模拟题目通常具有码量大、操作多、思路繁复的特点。并且由于它码量大,会导致很难查错,如果是在考试上是相当浪费时间的。 diff --git a/docs/basic/stl-sort.md b/docs/basic/stl-sort.md index e84e78a4..5434fdb1 100644 --- a/docs/basic/stl-sort.md +++ b/docs/basic/stl-sort.md @@ -6,9 +6,9 @@ C 标准库实现了快速排序,即 `stdlib.h` 当中的 `qsort` 。 C++ 标准并未严格要求此函数的实现算法,具体实现取决于编译器。 -旧版 C++ 标准中仅要求它的 **平均** 时间复杂度达到 $O(n\log n)$ ,但 C++11 标准要求它的 **最坏** 时间复杂度是达到 $O(n\log n)$ 。可以查阅[std::sort()](https://en.cppreference.com/w/cpp/algorithm/sort) +旧版 C++ 标准中仅要求它的 **平均** 时间复杂度达到 $O(n\log n)$ ,但 C++11 标准要求它的 **最坏** 时间复杂度是达到 $O(n\log n)$ 。可以查阅 [std::sort()](https://en.cppreference.com/w/cpp/algorithm/sort) -在[libstdc++](https://github.com/mirrors/gcc/blob/master/libstdc++-v3/include/bits/stl_algo.h)和[libc++](http://llvm.org/svn/llvm-project/libcxx/trunk/include/algorithm)中使用的都是[Introsort](https://en.wikipedia.org/wiki/Introsort)。 +在 [libstdc++](https://github.com/mirrors/gcc/blob/master/libstdc++-v3/include/bits/stl_algo.h) 和 [libc++](http://llvm.org/svn/llvm-project/libcxx/trunk/include/algorithm) 中使用的都是 [Introsort](https://en.wikipedia.org/wiki/Introsort) 。 Introsort 限制了快速排序的分治深度,当分治达到一定深度之后,改用最坏时间复杂度为 $O(n\log n)$ 的排序算法(比如堆排序)来给子数组排序。 @@ -66,7 +66,7 @@ std::partial_sort(begin, begin + k, end); ## 定义运算符 -对于内置类型(如 `int` )和用户定义的结构体,你都可以定义调用 STL 排序函数时使用的 **小于运算符** 。你可以在调用函数时同时传入一个比较运算符的函数(一般是最后一项),也可以直接重载该类型的默认运算符。参见[cppreference](https://zh.cppreference.com/w/cpp/language/operators)。 +对于内置类型(如 `int` )和用户定义的结构体,你都可以定义调用 STL 排序函数时使用的 **小于运算符** 。你可以在调用函数时同时传入一个比较运算符的函数(一般是最后一项),也可以直接重载该类型的默认运算符。参见 [cppreference](https://zh.cppreference.com/w/cpp/language/operators) 。 下面是几个例子: ```cpp @@ -94,7 +94,7 @@ std::sort(da + 1, da + 1 + 10, cmp); // 重载小于运算符为大于,从大 ### 严格弱序 -进行排序的运算符必须满足严格弱序([Strict weak orderings](https://en.wikipedia.org/wiki/Weak_ordering#Strict_weak_orderings)),否则会出现不可预料的情况(如运行时错误)。 +进行排序的运算符必须满足严格弱序( [Strict weak orderings](https://en.wikipedia.org/wiki/Weak_ordering#Strict_weak_orderings) ),否则会出现不可预料的情况(如运行时错误)。 严格弱序的要求: 1. $x \not< x$ (非自反性) @@ -110,4 +110,4 @@ std::sort(da + 1, da + 1 + 10, cmp); // 重载小于运算符为大于,从大 ### Reference -- [浅谈邻项交换排序的应用以及需要注意的问题](https://ouuan.github.io/浅谈邻项交换排序的应用以及需要注意的问题/) +- [浅谈邻项交换排序的应用以及需要注意的问题](https://ouuan.github.io/浅谈邻项交换排序的应用以及需要注意的问题/) diff --git a/docs/basic/use-of-sort.md b/docs/basic/use-of-sort.md index 22c4d242..414b612a 100644 --- a/docs/basic/use-of-sort.md +++ b/docs/basic/use-of-sort.md @@ -6,4 +6,4 @@ 我们不妨先对这一列数排序,之后不难发现:如果有相等的两个数,它们一定在新数列中处于相邻的位置上。这时,只需要 $O(n)$ 地扫一遍新数列了。总的时间复杂度是排序的复杂度( $O(n\log n)$ )。 -排序也是[二分查找](/basic/binary/)所要做的预处理工作。在排序后使用[二分查找](/basic/binary/),我们可以在 $O(\log n)$ 的时间内在序列中查找指定的元素。 +排序也是 [二分查找](/basic/binary/) 所要做的预处理工作。在排序后使用 [二分查找](/basic/binary/) ,我们可以在 $O(\log n)$ 的时间内在序列中查找指定的元素。 diff --git a/docs/dp/dag.md b/docs/dp/dag.md index 2d36344a..e146ae09 100644 --- a/docs/dp/dag.md +++ b/docs/dp/dag.md @@ -1,4 +1,4 @@ -DAG 即[有向无环图](/graph/dag),一些实际问题中的二元关系都可使用 DAG 来建模。 +DAG 即 [有向无环图](/graph/dag) ,一些实际问题中的二元关系都可使用 DAG 来建模。 ## 例子 diff --git a/docs/dp/index.md b/docs/dp/index.md index c3cf2170..6771ecb1 100644 --- a/docs/dp/index.md +++ b/docs/dp/index.md @@ -137,7 +137,7 @@ int dp() { ### 稍复杂的第二种 - $O\left(n log n\right)$ 的算法,参考了这篇文章。 + $O\left(n log n\right)$ 的算法,参考了这篇文章 。 首先,定义 $a_1 \dots a_n$ 为原始序列, $d$ 为当前的不下降子序列, $len$ 为子序列的长度,那么 $d_{len}$ 就是长度为 $len$ 的不下降子序列末尾元素。 @@ -186,7 +186,7 @@ $$ 也可以转化为 LCS 问题,只需要把 $a$ 串反转当做 $b$ ,对 $a$ 和 $b$ 求 LCS 即可。 -证明在[这里](https://www.zhihu.com/question/34580085/answer/59539708)。 +证明在 [这里](https://www.zhihu.com/question/34580085/answer/59539708) 。 注意区分子串(要求连续)的问题。 @@ -214,13 +214,13 @@ $$ 至于如何找是否有这么一个 $id$ 呢?递推的时候存一个 $max$ 就好了。 -代码在: +代码在: ### 双调欧几里得旅行商问题 好像出成了某一年程设期末。 -upd:其实是[程设期末推荐练习](https://ir1d.cf/2018/06/23/cssx/程设期末推荐练习/)里面的。 +upd:其实是 [程设期末推荐练习](https://ir1d.cf/2018/06/23/cssx/程设期末推荐练习/) 里面的。 书上的提示是:从左到右扫描,对巡游路线的两个部分分别维护可能的最优解。 @@ -245,7 +245,7 @@ upd:其实是[程设期末推荐练习](https://ir1d.cf/2018/06/23/cssx/程设 答案是 $\min(dp[n][i] + dis[n][i])$ 。 (从一开始编号,终点是 $n$ ) -代码: +代码: #### 思路二 @@ -307,11 +307,11 @@ insert : -2 ### 译码算法 -[Viterbi algorithm](https://en.wikipedia.org/wiki/Viterbi_algorithm)之前写词性标注的时候有用到,好像用在输入法里面也是类似的。 + [Viterbi algorithm](https://en.wikipedia.org/wiki/Viterbi_algorithm) 之前写词性标注的时候有用到,好像用在输入法里面也是类似的。 本题中用来实现语音识别,其实就是找一条对应的概率最大的路径。 -ref: +ref: ### 基于接缝裁剪的图像压缩 @@ -345,7 +345,7 @@ ref: 这是个很有趣的结论,dp 问题中很常见。 - + 剩下的就是个二维 dp,想成从 $(1, i)$ 走到 $(n, m)$ 的路径的问题,然后收益和代价就是边权,网格图只能往右下方走。 @@ -355,13 +355,13 @@ ref: $cost[i][j]$ 表示剩下 $i$ 个月,开始的时候有 $j$ 台库存的最小成本。 - + ### 签约棒球自由球员 $v[i][j]$ 是考虑 $i$ 之后的位置,总费用为 $x$ 的最大收益。 - + 类似于背包问题。 diff --git a/docs/dp/interval.md b/docs/dp/interval.md index 37fc00f6..fea3bf43 100644 --- a/docs/dp/interval.md +++ b/docs/dp/interval.md @@ -46,8 +46,8 @@ for (len = 1; len <= n; len++) ## 几道练习题 -[NOIP 2006 能量项链](https://vijos.org/p/1312) + [NOIP 2006 能量项链](https://vijos.org/p/1312) -[NOIP 2007 矩阵取数游戏](https://vijos.org/p/1378) + [NOIP 2007 矩阵取数游戏](https://vijos.org/p/1378) -[洛谷 P4767\[IOI2000\]邮局](https://www.luogu.org/problemnew/show/P4767) + [洛谷 P4767\[IOI2000\]邮局](https://www.luogu.org/problemnew/show/P4767) diff --git a/docs/dp/knapsack.md b/docs/dp/knapsack.md index 9db70ece..2b35f386 100644 --- a/docs/dp/knapsack.md +++ b/docs/dp/knapsack.md @@ -1,6 +1,6 @@ author: hydingsy, Link-cute, Ir1d, greyqz, LuoshuiTianyi, Odeinjul -在学习本章前请确认你已经学习了[动态规划部分简介](/dp/) +在学习本章前请确认你已经学习了 [动态规划部分简介](/dp/) 在具体讲何为“背包 dp”前,先来看如下的例题: @@ -187,7 +187,7 @@ for (循环物品种类) { ## 二维费用背包 -先来一道例题:[「Luogu P1855」榨取 kkksc03](https://www.luogu.org/problemnew/show/P1855)。 +先来一道例题: [「Luogu P1855」榨取 kkksc03](https://www.luogu.org/problemnew/show/P1855) 。 这道题是很明显的 0-1 背包问题,可是不同的是选一个物品会消耗两种价值(经费、时间)。这种问题其实很简单:方程基本不用变,只需再开一维数组,同时转移两个价值就行了!(完全、多重背包同理) @@ -205,7 +205,7 @@ for (int k = 1; k <= n; k++) { ## 分组背包 -再看一道例题:[「Luogu P1757」通天之分组背包](https://www.luogu.org/problemnew/show/P1757)。 +再看一道例题: [「Luogu P1757」通天之分组背包](https://www.luogu.org/problemnew/show/P1757) 。 所谓分组背包,就是将物品分组,每组的物品相互冲突,最多只能选一个物品放进去。 @@ -228,7 +228,7 @@ for (int k = 1; k <= ts; k++) //循环每一组 ## 有依赖的背包 -一道例题:[「Luogu P1064」金明的预算方案](https://www.luogu.org/problemnew/show/P1064)。 +一道例题: [「Luogu P1064」金明的预算方案](https://www.luogu.org/problemnew/show/P1064) 。 这种背包问题其实就是如果选第 $i$ 件物品,就必须选第 $j$ 件物品,保证不会循环引用,一部分题目甚至会出现多叉树的引用形式。为了方便,就称不依赖于别的物品的物品称为“主件”,依赖于某主件的物品称为“附件”。 @@ -287,4 +287,4 @@ $$ ### 参考资料 -dd 大牛(崔添翼)的背包九讲,GitHub 仓库链接:[tianyicui/pack: 背包问题九讲](https://github.com/tianyicui/pack)。 +dd 大牛(崔添翼)的背包九讲,GitHub 仓库链接: [tianyicui/pack: 背包问题九讲](https://github.com/tianyicui/pack) 。 diff --git a/docs/dp/memo.md b/docs/dp/memo.md index 42d66794..89dcd18f 100644 --- a/docs/dp/memo.md +++ b/docs/dp/memo.md @@ -4,11 +4,11 @@ ## 记忆化搜索是啥 -好,就以[NOIP 2005 采药](https://vijos.org/p/1104)为例: +好,就以 [NOIP 2005 采药](https://vijos.org/p/1104) 为例: > 山洞里有 M 株不同的草药,采每一株都需要一些时间 $t_i$ ,每一株也有它自身的价值 $v_i$ 。我会给你一段时间 T,在这段时间里,你可以采到一些草药。让采到的草药的总价值最大。 -我不会动态规划,只会搜索,我就会直接写一个粗暴的[DFS](/search/dfs): +我不会动态规划,只会搜索,我就会直接写一个粗暴的 [DFS](/search/dfs) : - 注:为了方便食用,本文中所有代码省略头文件 @@ -201,7 +201,7 @@ int main() { ### 方法 II -1. 写出这道题的暴搜程序(最好是[dfs](/search/dfs)) +1. 写出这道题的暴搜程序(最好是 [dfs](/search/dfs) ) 2. 将这个 dfs 改成 "无需外部变量" 的 dfs 3. 添加记忆化数组 diff --git a/docs/dp/number.md b/docs/dp/number.md index 2be1751e..8c469315 100644 --- a/docs/dp/number.md +++ b/docs/dp/number.md @@ -52,18 +52,18 @@ int solve(int x) { ## 几道练习题 -[BZOJ 3679 数字之积](https://www.lydsy.com/JudgeOnline/problem.php?id=3679) + [BZOJ 3679 数字之积](https://www.lydsy.com/JudgeOnline/problem.php?id=3679) -[ZJOI2010 count 数字计数](https://www.lydsy.com/JudgeOnline/problem.php?id=1833) + [ZJOI2010 count 数字计数](https://www.lydsy.com/JudgeOnline/problem.php?id=1833) -[Ahoi2009 self 同类分布](https://www.lydsy.com/JudgeOnline/problem.php?id=1799) + [Ahoi2009 self 同类分布](https://www.lydsy.com/JudgeOnline/problem.php?id=1799) -[洛谷 P3413 SAC#1 - 萌数](https://www.luogu.org/problemnew/show/P3413) + [洛谷 P3413 SAC#1 - 萌数](https://www.luogu.org/problemnew/show/P3413) -[HDU 6148 Valley Number](http://acm.hdu.edu.cn/showproblem.php?pid=6148) + [HDU 6148 Valley Number](http://acm.hdu.edu.cn/showproblem.php?pid=6148) -[CF55D Beautiful numbers](http://codeforces.com/problemset/problem/55/D) + [CF55D Beautiful numbers](http://codeforces.com/problemset/problem/55/D) -[CF628D Magic Numbers](http://codeforces.com/problemset/problem/628/D) + [CF628D Magic Numbers](http://codeforces.com/problemset/problem/628/D) -[CF401D Roman and Numbers](http://codeforces.com/problemset/problem/401/D) + [CF401D Roman and Numbers](http://codeforces.com/problemset/problem/401/D) diff --git a/docs/dp/opt/binary-knapsack.md b/docs/dp/opt/binary-knapsack.md index 42b9fcba..0ecbb7fc 100644 --- a/docs/dp/opt/binary-knapsack.md +++ b/docs/dp/opt/binary-knapsack.md @@ -32,4 +32,4 @@ for (int i = 1; i <= cur; i++) ## 习题 -[HDU 2844 Coins](http://acm.hdu.edu.cn/showproblem.php?pid=2844) + [HDU 2844 Coins](http://acm.hdu.edu.cn/showproblem.php?pid=2844) diff --git a/docs/dp/opt/monotonous-queue-stack.md b/docs/dp/opt/monotonous-queue-stack.md index 4716a6bf..6c55e597 100644 --- a/docs/dp/opt/monotonous-queue-stack.md +++ b/docs/dp/opt/monotonous-queue-stack.md @@ -2,7 +2,7 @@ author: TrisolarisHD, hsfzLZH1, Ir1d, greyqz, Anguei, billchenchina, Chrogeek, C ## 介绍 -学习本节前,请务必先学习[单调队列](/ds/monotonous-queue/)及[单调栈](/ds/monotonous-stack/)部分。 +学习本节前,请务必先学习 [单调队列](/ds/monotonous-queue/) 及 [单调栈](/ds/monotonous-stack/) 部分。 ??? note " 例题[CF372C Watching Fireworks is Fun](http://codeforces.com/problemset/problem/372/C)" 题目大意:城镇中有 $n$ 个位置,有 $m$ 个烟花要放。第 $i$ 个烟花放出的时间记为 $t_i$ ,放出的位置记为 $a_i$ 。如果烟花放出的时候,你处在位置 $x$ ,那么你将收获 $b_i-|a_i-x|$ 点快乐值。 @@ -33,8 +33,8 @@ author: TrisolarisHD, hsfzLZH1, Ir1d, greyqz, Anguei, billchenchina, Chrogeek, C ## 习题 -[「Luogu P1886」滑动窗口](https://www.luogu.org/problemnew/show/P1886) + [「Luogu P1886」滑动窗口](https://www.luogu.org/problemnew/show/P1886) -[「NOI2005」瑰丽华尔兹](https://www.lydsy.com/JudgeOnline/problem.php?id=1499) + [「NOI2005」瑰丽华尔兹](https://www.lydsy.com/JudgeOnline/problem.php?id=1499) -[「SCOI2010」股票交易](https://www.lydsy.com/JudgeOnline/problem.php?id=1855) + [「SCOI2010」股票交易](https://www.lydsy.com/JudgeOnline/problem.php?id=1855) diff --git a/docs/dp/opt/quadrangle.md b/docs/dp/opt/quadrangle.md index af533745..9dbfe4a6 100644 --- a/docs/dp/opt/quadrangle.md +++ b/docs/dp/opt/quadrangle.md @@ -198,7 +198,7 @@ void DP(int l, int r, int k_l, int k_r) { 使用递归树的方法,容易分析出该分治算法的复杂度为 $O(n\log n)$ ,因为递归树每一层的决策区间总长度不超过 $2n$ ,而递归层数显然为 $O(\log n)$ 级别。 -### 例题 1.[「loj2157」「POI2011」Lightning Conductor](https://loj.ac/problem/2157) +### 例题 1. [「loj2157」「POI2011」Lightning Conductor](https://loj.ac/problem/2157) 题目大意:给定一个长度为 $n\leq 500000$ 的序列 $a_1, a_2, \cdots, a_n$ ,要求对于每一个 $1 \leq r \leq n$ ,找到最小的非负整数 $f_{r}$ 满足 @@ -268,7 +268,7 @@ $$ 回顾例题 1 中的 $w(l, r) = -a_l - \sqrt{r-l} + a_r$ ,由性质 2 可知 $-a_l+a_r$ 满足四边形不等式,而 $r-l$ 满足四边形恒等式和区间包含单调性。再根据 $-\sqrt{x}$ 的凸性以及性质 4 可知 $-\sqrt{r-l}$ 也满足四边形不等式,最终利用性质 1,即可得出 $w(l, r)$ 满足四边形不等式性质了。 -### 例题 2.[「BZOJ1010」「HNOI2008」玩具装箱 toy](https://www.lydsy.com/JudgeOnline/problem.php?id=1010) +### 例题 2. [「BZOJ1010」「HNOI2008」玩具装箱 toy](https://www.lydsy.com/JudgeOnline/problem.php?id=1010) 题目大意:有 $n$ 个玩具需要装箱,要求每个箱子中的玩具编号必须是连续的。每个玩具有一个长度 $C_i$ ,如果一个箱子中有多个玩具,那么每两个玩具之间要加入一个单位长度的分隔物。形式化地说,如果将编号在 $[l,r]$ 间的玩具装在一个箱子里,那么这个箱子的长度为 $r-l+\sum_{k=l}^r C_k$ 。现在需要制定一个装箱方案,使得所有容器的长度与 $K$ 差值的平方之和最小。 @@ -282,8 +282,8 @@ $$ ## 习题 -[「Luogu P4767」「IOI2000」邮局](https://www.luogu.org/problemnew/show/P4767) + [「Luogu P4767」「IOI2000」邮局](https://www.luogu.org/problemnew/show/P4767) ## 参考资料 -[noiau 的 CSDN 博客](https://blog.csdn.net/noiau/article/details/72514812) + [noiau 的 CSDN 博客](https://blog.csdn.net/noiau/article/details/72514812) diff --git a/docs/dp/opt/slope.md b/docs/dp/opt/slope.md index b07937ac..d66decc3 100644 --- a/docs/dp/opt/slope.md +++ b/docs/dp/opt/slope.md @@ -23,20 +23,20 @@ author: TrisolarisHD, hsfzLZH1, abc1763613206, greyqz, Ir1d, billchenchina, Chro ## 习题 -[「SDOI2016」征途](https://www.lydsy.com/JudgeOnline/problem.php?id=4518) + [「SDOI2016」征途](https://www.lydsy.com/JudgeOnline/problem.php?id=4518) -[「ZJOI2007」仓库建设](https://www.lydsy.com/JudgeOnline/problem.php?id=1096) + [「ZJOI2007」仓库建设](https://www.lydsy.com/JudgeOnline/problem.php?id=1096) -[「APIO2010」特别行动队](https://www.lydsy.com/JudgeOnline/problem.php?id=1911) + [「APIO2010」特别行动队](https://www.lydsy.com/JudgeOnline/problem.php?id=1911) -[「BZOJ 4709」「JSOI2011」柠檬](https://www.lydsy.com/JudgeOnline/problem.php?id=4709) + [「BZOJ 4709」「JSOI2011」柠檬](https://www.lydsy.com/JudgeOnline/problem.php?id=4709) -[「Codeforces 311B」Cats Transport](http://codeforces.com/problemset/problem/311/B) + [「Codeforces 311B」Cats Transport](http://codeforces.com/problemset/problem/311/B) -[「NOI2007」货币兑换](https://www.lydsy.com/JudgeOnline/problem.php?id=1492) + [「NOI2007」货币兑换](https://www.lydsy.com/JudgeOnline/problem.php?id=1492) -[「NOI2019」回家路线](https://www.luogu.org/problemnew/show/P5468) + [「NOI2019」回家路线](https://www.luogu.org/problemnew/show/P5468) -[「NOI2016」国王饮水记](https://www.luogu.org/problemnew/show/P1721) + [「NOI2016」国王饮水记](https://www.luogu.org/problemnew/show/P1721) -[「NOI2014」购票](https://www.luogu.org/problemnew/show/P2305) + [「NOI2014」购票](https://www.luogu.org/problemnew/show/P2305) diff --git a/docs/dp/state.md b/docs/dp/state.md index 32a066ae..388749a8 100644 --- a/docs/dp/state.md +++ b/docs/dp/state.md @@ -1,6 +1,6 @@ -学习状压 dp 之前,请确认你已经完成了[动态规划初步](/dp)部分内容的学习。 +学习状压 dp 之前,请确认你已经完成了 [动态规划初步](/dp) 部分内容的学习。 -(同时建议学习[位运算](/math/bit)部分的内容) +(同时建议学习 [位运算](/math/bit) 部分的内容) ## 状压 DP 简介 @@ -61,10 +61,10 @@ ## 几道练习题 -[NOI2001 炮兵阵地](https://www.luogu.org/problemnew/show/P2704) + [NOI2001 炮兵阵地](https://www.luogu.org/problemnew/show/P2704) -[\[USACO06NOV\]玉米田 Corn Fields](https://www.luogu.org/problemnew/show/P1879) + [\[USACO06NOV\]玉米田 Corn Fields](https://www.luogu.org/problemnew/show/P1879) -[AHOI2009 中国象棋](https://www.lydsy.com/JudgeOnline/problem.php?id=1801) + [AHOI2009 中国象棋](https://www.lydsy.com/JudgeOnline/problem.php?id=1801) -[九省联考 2018 一双木棋](https://www.luogu.org/problemnew/show/P4363) + [九省联考 2018 一双木棋](https://www.luogu.org/problemnew/show/P4363) diff --git a/docs/dp/tree.md b/docs/dp/tree.md index 0d62f49c..e0ac6222 100644 --- a/docs/dp/tree.md +++ b/docs/dp/tree.md @@ -1,4 +1,4 @@ -在学习本章前请确认你已经学习了[动态规划部分简介](/dp) +在学习本章前请确认你已经学习了 [动态规划部分简介](/dp) 树形 DP,即在树上进行的 DP。由于树固有的递归性质,树形 DP 一般都是递归进行的。 @@ -65,8 +65,8 @@ int main() { ## 习题 -[HDU 2196 Computer](http://acm.hdu.edu.cn/showproblem.php?pid=2196) + [HDU 2196 Computer](http://acm.hdu.edu.cn/showproblem.php?pid=2196) -[POJ 1463 Strategic game](http://poj.org/problem?id=1463) + [POJ 1463 Strategic game](http://poj.org/problem?id=1463) -[POJ 3585 Accumulation Degree](http://poj.org/problem?id=3585) + [POJ 3585 Accumulation Degree](http://poj.org/problem?id=3585) diff --git a/docs/ds/balanced-in-seg.md b/docs/ds/balanced-in-seg.md index 6c0ce9b8..16e78631 100644 --- a/docs/ds/balanced-in-seg.md +++ b/docs/ds/balanced-in-seg.md @@ -29,11 +29,11 @@ author: Dev-jqe, HeRaNO ## 经典例题 -[二逼平衡树](https://www.lydsy.com/JudgeOnline/problem.php?id=3196)外层线段树,内层平衡树。 + [二逼平衡树](https://www.lydsy.com/JudgeOnline/problem.php?id=3196) 外层线段树,内层平衡树。 ## 示例代码 -平衡树部分代码请参考 Splay 等其他条目。[传送至 Splay 条目](/ds/splay/) +平衡树部分代码请参考 Splay 等其他条目。 [传送至 Splay 条目](/ds/splay/) 操作一 diff --git a/docs/ds/bit.md b/docs/ds/bit.md index 124844ad..ae2b27c4 100644 --- a/docs/ds/bit.md +++ b/docs/ds/bit.md @@ -183,8 +183,8 @@ int getsum(int k) { ## 例题 -- [树状数组 1:单点修改,区间查询](https://loj.ac/problem/130) -- [树状数组 2:区间修改,单点查询](https://loj.ac/problem/131) -- [树状数组 3:区间修改,区间查询](https://loj.ac/problem/132) -- [二维树状数组 1:单点修改,区间查询](https://loj.ac/problem/133) -- [二维树状数组 3:区间修改,区间查询](https://loj.ac/problem/135) +- [树状数组 1:单点修改,区间查询](https://loj.ac/problem/130) +- [树状数组 2:区间修改,单点查询](https://loj.ac/problem/131) +- [树状数组 3:区间修改,区间查询](https://loj.ac/problem/132) +- [二维树状数组 1:单点修改,区间查询](https://loj.ac/problem/133) +- [二维树状数组 3:区间修改,区间查询](https://loj.ac/problem/135) diff --git a/docs/ds/block-array.md b/docs/ds/block-array.md index 62203fba..763bed95 100644 --- a/docs/ds/block-array.md +++ b/docs/ds/block-array.md @@ -21,7 +21,7 @@ for (int i = 1; i <= num; i++) { ## 保存与修改块内信息 -### 例题 1:[教主的魔法](https://www.luogu.org/problemnew/show/P2801) +### 例题 1: [教主的魔法](https://www.luogu.org/problemnew/show/P2801) 我们要询问一个块内大于等于一个数的数的个数,所以需要一个 `t` 数组对块内排序。对于整块的修改,使用类似于标记永久化的方式保存。时间复杂度 $O(n\sqrt{n}\times log_2{\sqrt{n}})$ @@ -130,9 +130,9 @@ int Answer(int l, int r, int c) { ## 练习 -1. [单点修改,区间查询](https://loj.ac/problem/130) -2. [区间修改,区间查询](https://loj.ac/problem/132) -3. [【模板】线段树 2](https://www.luogu.org/problemnew/show/P3373) -4. [\[Ynoi2019 模拟赛\]Yuno loves sqrt technology III](https://www.luogu.org/problemnew/show/P5048) -5. [\[Violet\]蒲公英](https://www.luogu.org/problemnew/show/P4168) -6. [作诗](https://www.luogu.org/problemnew/show/P4135) +1. [单点修改,区间查询](https://loj.ac/problem/130) +2. [区间修改,区间查询](https://loj.ac/problem/132) +3. [【模板】线段树 2](https://www.luogu.org/problemnew/show/P3373) +4. [\[Ynoi2019 模拟赛\]Yuno loves sqrt technology III](https://www.luogu.org/problemnew/show/P5048) +5. [\[Violet\]蒲公英](https://www.luogu.org/problemnew/show/P4168) +6. [作诗](https://www.luogu.org/problemnew/show/P4135) diff --git a/docs/ds/block-list.md b/docs/ds/block-list.md index 19b48eff..29e442f7 100644 --- a/docs/ds/block-list.md +++ b/docs/ds/block-list.md @@ -1,6 +1,6 @@ author: HeRaNO, konnyakuxzy -[![./images/kuaizhuanglianbiao.png](./images/kuaizhuanglianbiao.png "./images/kuaizhuanglianbiao.png")](./images/kuaizhuanglianbiao.png "./images/kuaizhuanglianbiao.png") + [![./images/kuaizhuanglianbiao.png](./images/kuaizhuanglianbiao.png "./images/kuaizhuanglianbiao.png")](./images/kuaizhuanglianbiao.png "./images/kuaizhuanglianbiao.png") 大概就长这样…… diff --git a/docs/ds/cartesian-tree.md b/docs/ds/cartesian-tree.md index 32838c16..f3cac4ef 100644 --- a/docs/ds/cartesian-tree.md +++ b/docs/ds/cartesian-tree.md @@ -102,4 +102,4 @@ int main() { ## 参考资料 -[维基百科 - 笛卡尔树](https://zh.wikipedia.org/wiki/%E7%AC%9B%E5%8D%A1%E5%B0%94%E6%A0%91) + [维基百科 - 笛卡尔树](https://zh.wikipedia.org/wiki/%E7%AC%9B%E5%8D%A1%E5%B0%94%E6%A0%91) diff --git a/docs/ds/divide-combine.md b/docs/ds/divide-combine.md index db10121d..8291b196 100644 --- a/docs/ds/divide-combine.md +++ b/docs/ds/divide-combine.md @@ -168,7 +168,7 @@ $$ ### 实现 -最后放一个实现的代码供参考。代码转自[大米饼的博客](https://www.cnblogs.com/Paul-Guderian/p/11020708.html),被我加了一些注释。 +最后放一个实现的代码供参考。代码转自 [大米饼的博客](https://www.cnblogs.com/Paul-Guderian/p/11020708.html) ,被我加了一些注释。 ```cpp #include @@ -400,4 +400,4 @@ int main() { 刘承奥。简单的连续段数据结构。WC2019 营员交流。 -[大米饼的博客 -【学习笔记】析合树](https://www.cnblogs.com/Paul-Guderian/p/11020708.html) + [大米饼的博客 -【学习笔记】析合树](https://www.cnblogs.com/Paul-Guderian/p/11020708.html) diff --git a/docs/ds/dividing.md b/docs/ds/dividing.md index 36c082d3..f7204486 100644 --- a/docs/ds/dividing.md +++ b/docs/ds/dividing.md @@ -90,4 +90,4 @@ end; ## 后记 -大家可以试着去写非递归版哦。参考博文 :[传送门](https://blog.csdn.net/littlewhite520/article/details/70250722)。 +大家可以试着去写非递归版哦。参考博文 : [传送门](https://blog.csdn.net/littlewhite520/article/details/70250722) 。 diff --git a/docs/ds/dsu.md b/docs/ds/dsu.md index 8308bf14..ddee91b8 100644 --- a/docs/ds/dsu.md +++ b/docs/ds/dsu.md @@ -107,7 +107,7 @@ void unionSet(int x, int y) { ### 时间复杂度 -同时使用路径压缩和启发式合并之后,并查集的每个操作平均时间仅为 $O(\alpha(n))$ ,其中 $\alpha$ 为[阿克曼函数](https://en.wikipedia.org/wiki/Ackermann_function)的反函数,其增长极其缓慢,也就是说其单次操作的平均运行时间可以认为是一个很小的常数。 +同时使用路径压缩和启发式合并之后,并查集的每个操作平均时间仅为 $O(\alpha(n))$ ,其中 $\alpha$ 为 [阿克曼函数](https://en.wikipedia.org/wiki/Ackermann_function) 的反函数,其增长极其缓慢,也就是说其单次操作的平均运行时间可以认为是一个很小的常数。 ### 空间复杂度 @@ -119,20 +119,20 @@ void unionSet(int x, int y) { ## 经典题目 -[「NOI2015」程序自动分析](https://www.lydsy.com/JudgeOnline/problem.php?id=4195) + [「NOI2015」程序自动分析](https://www.lydsy.com/JudgeOnline/problem.php?id=4195) -[「JSOI2008」星球大战](https://www.lydsy.com/JudgeOnline/problem.php?id=1015) + [「JSOI2008」星球大战](https://www.lydsy.com/JudgeOnline/problem.php?id=1015) -[「NOI2001」食物链](http://poj.org/problem?id=1182) + [「NOI2001」食物链](http://poj.org/problem?id=1182) -[「NOI2002」银河英雄传说](https://www.luogu.org/problemnew/show/P1196) + [「NOI2002」银河英雄传说](https://www.luogu.org/problemnew/show/P1196) ## 其他应用 -[最小生成树算法](/graph/mst)中的 Kruskal 是基于并查集的算法。 + [最小生成树算法](/graph/mst) 中的 Kruskal 是基于并查集的算法。 ## References -- [1]Tarjan, R. E., & Van Leeuwen, J. (1984). Worst-case analysis of set union algorithms. Journal of the ACM (JACM), 31(2), 245-281.[ResearchGate PDF](https://www.researchgate.net/profile/Jan_Van_Leeuwen2/publication/220430653_Worst-case_Analysis_of_Set_Union_Algorithms/links/0a85e53cd28bfdf5eb000000/Worst-case-Analysis-of-Set-Union-Algorithms.pdf) -- [2]Yao, A. C. (1985). On the expected performance of path compression algorithms.[SIAM Journal on Computing, 14(1), 129-133.](https://epubs.siam.org/doi/abs/10.1137/0214010?journalCode=smjcat) -- [3][知乎回答:是否在并查集中真的有二分路径压缩优化?]() +- [1]Tarjan, R. E., & Van Leeuwen, J. (1984). Worst-case analysis of set union algorithms. Journal of the ACM (JACM), 31(2), 245-281. [ResearchGate PDF](https://www.researchgate.net/profile/Jan_Van_Leeuwen2/publication/220430653_Worst-case_Analysis_of_Set_Union_Algorithms/links/0a85e53cd28bfdf5eb000000/Worst-case-Analysis-of-Set-Union-Algorithms.pdf) +- [2]Yao, A. C. (1985). On the expected performance of path compression algorithms. [SIAM Journal on Computing, 14(1), 129-133.](https://epubs.siam.org/doi/abs/10.1137/0214010?journalCode=smjcat) +- [3][知乎回答:是否在并查集中真的有二分路径压缩优化?]( ) diff --git a/docs/ds/hash.md b/docs/ds/hash.md index ca156805..d5d8f3b7 100644 --- a/docs/ds/hash.md +++ b/docs/ds/hash.md @@ -85,4 +85,4 @@ struct hash_map { // 哈希表模板 ## 例题 -[\[JLOI2011\]不重复数字](https://www.lydsy.com/JudgeOnline/problem.php?id=2761) + [\[JLOI2011\]不重复数字](https://www.lydsy.com/JudgeOnline/problem.php?id=2761) diff --git a/docs/ds/index.md b/docs/ds/index.md index 0a0cadcc..e3c11b5f 100644 --- a/docs/ds/index.md +++ b/docs/ds/index.md @@ -14,9 +14,9 @@ author: HeRaNO, Zhoier, hsfzLZH1 - A:算法竞赛中,数据结构的考察主要分为两类: - ​ 1. 考察对于特定信息的检索与维护和对特定操作的支持,例如[「SCOI2010」序列操作](https://www.lydsy.com/JudgeOnline/problem.php?id=1858) + ​ 1. 考察对于特定信息的检索与维护和对特定操作的支持,例如 [「SCOI2010」序列操作](https://www.lydsy.com/JudgeOnline/problem.php?id=1858) - ​ 2. 使用合适数据结构加速信息检索,优化算法复杂度,例如[「APIO2012」派遣](https://www.lydsy.com/JudgeOnline/problem.php?id=2809) + ​ 2. 使用合适数据结构加速信息检索,优化算法复杂度,例如 [「APIO2012」派遣](https://www.lydsy.com/JudgeOnline/problem.php?id=2809) - Q:有没有一种完美的数据结构可以搞定所有事情啊? diff --git a/docs/ds/kdt.md b/docs/ds/kdt.md index 0fab05ae..2ca48c25 100644 --- a/docs/ds/kdt.md +++ b/docs/ds/kdt.md @@ -46,7 +46,7 @@ k-D Tree 具有二叉搜索树的形态,二叉搜索树上的每个结点都 ## 插入/删除 -如果维护的这个 $k$ 维点集是可变的,即可能会插入或删除一些点,此时 k-D Tree 的平衡性无法保证。由于 k-D Tree 的构造,不能支持旋转,类似与 FHQ Treap 的随机优先级也不能保证其复杂度,可以保证平衡性的手段只有类似于[替罪羊树](/ds/scapegoat)的重构思想。 +如果维护的这个 $k$ 维点集是可变的,即可能会插入或删除一些点,此时 k-D Tree 的平衡性无法保证。由于 k-D Tree 的构造,不能支持旋转,类似与 FHQ Treap 的随机优先级也不能保证其复杂度,可以保证平衡性的手段只有类似于 [替罪羊树](/ds/scapegoat) 的重构思想。 我们引入一个重构常数 $\alpha$ ,对于 k-D Tree 上的一个结点 $x$ ,若其有一个子树的结点数在以 $x$ 为根的子树的结点数中的占比大于 $\alpha$ ,则认为以 $x$ 为根的子树是不平衡的,需要重构。重构时,先遍历子树求出一个序列,然后用以上描述的方法建出一棵 k-D Tree,代替原来不平衡的子树。 @@ -59,7 +59,7 @@ k-D Tree 具有二叉搜索树的形态,二叉搜索树上的每个结点都 ## 邻域查询 ???+note " 例题[luogu P1429 平面最近点对(加强版)](https://www.luogu.org/problem/P1429)" - 给定平面上的 $n$ 个点 $(x_i,y_i)$ ,找出平面上最近两个点对之间的[欧几里得距离](/geometry/distance/#_1)。 + 给定平面上的 $n$ 个点 $(x_i,y_i)$ ,找出平面上最近两个点对之间的 [欧几里得距离](/geometry/distance/#_1) 。 $2\le n\le 200000 , 0\le x_i,y_i\le 10^9$ @@ -380,14 +380,14 @@ k-D Tree 具有二叉搜索树的形态,二叉搜索树上的每个结点都 ## 习题 -[luogu P2479\[SDOI2010\]捉迷藏](https://www.luogu.org/problem/P2479) + [luogu P2479\[SDOI2010\]捉迷藏](https://www.luogu.org/problem/P2479) -[luogu P4169\[Violet\]天使玩偶/SJY 摆棋子](https://www.luogu.org/problem/P4169) + [luogu P4169\[Violet\]天使玩偶/SJY 摆棋子](https://www.luogu.org/problem/P4169) -[luogu P2093\[国家集训队\]JZPFAR](https://www.luogu.org/problem/P2093) + [luogu P2093\[国家集训队\]JZPFAR](https://www.luogu.org/problem/P2093) -[luogu P4390\[BOI2007\]Mokia 摩基亚](https://www.luogu.org/problem/P4390) + [luogu P4390\[BOI2007\]Mokia 摩基亚](https://www.luogu.org/problem/P4390) -[luogu P4475 巧克力王国](https://www.luogu.org/problem/P4475) + [luogu P4475 巧克力王国](https://www.luogu.org/problem/P4475) -[luogu P3769\[CH 弱省胡策 R2\]TATT](https://www.luogu.org/problem/P3769) + [luogu P3769\[CH 弱省胡策 R2\]TATT](https://www.luogu.org/problem/P3769) diff --git a/docs/ds/lct.md b/docs/ds/lct.md index 69a6dcdd..ec5a7925 100644 --- a/docs/ds/lct.md +++ b/docs/ds/lct.md @@ -195,7 +195,7 @@ inline void Splay(int x) { } ``` -如果上面的几个函数你看不懂,请移步[Splay](/ds/splay/)。 +如果上面的几个函数你看不懂,请移步 [Splay](/ds/splay/) 。 下面要开始 LCT 独有的函数了哦。 @@ -376,8 +376,8 @@ inline int Find(int p) { ## 习题 -- [「BZOJ 3282」Tree](https://lydsy.com/JudgeOnline/problem.php?id=3282) -- [「HNOI2010」Bounce 弹飞绵羊](https://lydsy.com/JudgeOnline/problem.php?id=2002) +- [「BZOJ 3282」Tree](https://lydsy.com/JudgeOnline/problem.php?id=3282) +- [「HNOI2010」Bounce 弹飞绵羊](https://lydsy.com/JudgeOnline/problem.php?id=2002) ## 维护树链信息 @@ -549,9 +549,9 @@ LCT 通过 `Split(x,y)` 操作,可以将树上从点 $x$ 到点 $y$ 的路径 ### 习题 -- [luogu P3690【模板】Link Cut Tree(动态树)](https://www.luogu.org/problemnew/show/P3690) -- [luogu P2486\[SDOI2011\]染色](https://www.luogu.org/problemnew/show/P2486) -- [luogu P4332\[SHOI2014\]三叉神经树](https://www.luogu.org/problemnew/show/P4332) +- [luogu P3690【模板】Link Cut Tree(动态树)](https://www.luogu.org/problemnew/show/P3690) +- [luogu P2486\[SDOI2011\]染色](https://www.luogu.org/problemnew/show/P2486) +- [luogu P4332\[SHOI2014\]三叉神经树](https://www.luogu.org/problemnew/show/P4332) ## 维护连通性质 @@ -826,9 +826,9 @@ LCT 通过 `Split(x,y)` 操作,可以将树上从点 $x$ 到点 $y$ 的路径 ### 习题 -- [luogu P3950 部落冲突](https://www.luogu.org/problemnew/show/P3950) -- [bzoj 4998 星球联盟](https://www.lydsy.com/JudgeOnline/problem.php?id=4998) -- [bzoj 2959 长跑](https://www.lydsy.com/JudgeOnline/problem.php?id=2959) +- [luogu P3950 部落冲突](https://www.luogu.org/problemnew/show/P3950) +- [bzoj 4998 星球联盟](https://www.lydsy.com/JudgeOnline/problem.php?id=4998) +- [bzoj 2959 长跑](https://www.lydsy.com/JudgeOnline/problem.php?id=2959) ## 维护边权 @@ -981,9 +981,9 @@ LCT 上没有固定的父子关系,所以不能将边权记录在点权中。 ### 习题 -- [luogu P4172\[WC2006\]水管局长](https://www.luogu.org/problem/P4172) -- [luogu P4180【模板】严格次小生成树\[BJWC2010\]](https://www.luogu.org/problemnew/show/P4180) -- [luogu P2387\[NOI2014\]魔法森林](https://www.luogu.org/problemnew/show/P2387) +- [luogu P4172\[WC2006\]水管局长](https://www.luogu.org/problem/P4172) +- [luogu P4180【模板】严格次小生成树\[BJWC2010\]](https://www.luogu.org/problemnew/show/P4180) +- [luogu P2387\[NOI2014\]魔法森林](https://www.luogu.org/problemnew/show/P2387) ## 维护子树信息 @@ -1147,5 +1147,5 @@ st.siz2[y] += st.siz[x]; ### 习题 -- [luogu P4299 首都](https://www.luogu.org/problemnew/show/P4299) -- [SPOJ QTREE5 - Query on a tree V](https://www.luogu.org/problemnew/show/SP2939) +- [luogu P4299 首都](https://www.luogu.org/problemnew/show/P4299) +- [SPOJ QTREE5 - Query on a tree V](https://www.luogu.org/problemnew/show/SP2939) diff --git a/docs/ds/leftist-tree.md b/docs/ds/leftist-tree.md index a50b3431..39debc50 100644 --- a/docs/ds/leftist-tree.md +++ b/docs/ds/leftist-tree.md @@ -1,6 +1,6 @@ ## 什么是左偏树? - **左偏树** 与[ **配对堆** ](/ds/pairing-heap)一样,是一种 **可并堆** ,具有堆的性质,并且可以快速合并。 + **左偏树** 与 [ **配对堆** ](/ds/pairing-heap) 一样,是一种 **可并堆** ,具有堆的性质,并且可以快速合并。 ## dist 的定义和性质 @@ -128,11 +128,11 @@ int pop(int x) { ### 模板题 -[luogu P3377【模板】左偏树(可并堆)](https://www.luogu.org/problemnew/show/P3377) + [luogu P3377【模板】左偏树(可并堆)](https://www.luogu.org/problemnew/show/P3377) -[Monkey King](https://www.luogu.org/problemnew/show/P1456) + [Monkey King](https://www.luogu.org/problemnew/show/P1456) -[罗马游戏](https://www.luogu.org/problemnew/show/P2713) + [罗马游戏](https://www.luogu.org/problemnew/show/P2713) 需要注意的是: @@ -223,9 +223,9 @@ int pop(int x) { ### 树上问题 -[「APIO2012」派遣](https://www.luogu.org/problemnew/show/P1552) + [「APIO2012」派遣](https://www.luogu.org/problemnew/show/P1552) -[「JLOI2015」城池攻占](https://www.luogu.org/problemnew/show/P3261) + [「JLOI2015」城池攻占](https://www.luogu.org/problemnew/show/P3261) 这类题目往往是每个节点维护一个堆,与儿子合并,依题意弹出、修改、计算答案,有点像线段树合并的类似题目。 @@ -372,7 +372,7 @@ int pop(int x) { } ``` -### [「SCOI2011」棘手的操作](https://www.luogu.org/problemnew/show/P3273) +### [「SCOI2011」棘手的操作](https://www.luogu.org/problemnew/show/P3273) ~~这题题如其名,非常棘手~~。 @@ -553,6 +553,6 @@ int pop(int x) { int find(int x) { return x == f[x] ? x : f[x] = find(f[x]); } ``` -### [「BOI2004」Sequence 数字序列](https://www.luogu.org/problemnew/show/P4331) +### [「BOI2004」Sequence 数字序列](https://www.luogu.org/problemnew/show/P4331) -这是一道论文题,详见[《黄源河 -- 左偏树的特点及其应用》](https://github.com/OI-wiki/libs/blob/master/%E9%9B%86%E8%AE%AD%E9%98%9F%E5%8E%86%E5%B9%B4%E8%AE%BA%E6%96%87/%E5%9B%BD%E5%AE%B6%E9%9B%86%E8%AE%AD%E9%98%9F2005%E8%AE%BA%E6%96%87%E9%9B%86/%E9%BB%84%E6%BA%90%E6%B2%B3--%E5%B7%A6%E5%81%8F%E6%A0%91%E7%9A%84%E7%89%B9%E7%82%B9%E5%8F%8A%E5%85%B6%E5%BA%94%E7%94%A8/%E9%BB%84%E6%BA%90%E6%B2%B3.pdf)。 +这是一道论文题,详见 [《黄源河 -- 左偏树的特点及其应用》](https://github.com/OI-wiki/libs/blob/master/%E9%9B%86%E8%AE%AD%E9%98%9F%E5%8E%86%E5%B9%B4%E8%AE%BA%E6%96%87/%E5%9B%BD%E5%AE%B6%E9%9B%86%E8%AE%AD%E9%98%9F2005%E8%AE%BA%E6%96%87%E9%9B%86/%E9%BB%84%E6%BA%90%E6%B2%B3--%E5%B7%A6%E5%81%8F%E6%A0%91%E7%9A%84%E7%89%B9%E7%82%B9%E5%8F%8A%E5%85%B6%E5%BA%94%E7%94%A8/%E9%BB%84%E6%BA%90%E6%B2%B3.pdf) 。 diff --git a/docs/ds/monotonous-queue.md b/docs/ds/monotonous-queue.md index 023d4d25..13436b25 100644 --- a/docs/ds/monotonous-queue.md +++ b/docs/ds/monotonous-queue.md @@ -4,7 +4,7 @@ author: Link-cute, Xeonacid, ouuan ## 例题 -[Sliding Window](http://poj.org/problem?id=2823) + [Sliding Window](http://poj.org/problem?id=2823) 本题大意是给出一个长度为 $n$ 的数组,编程输出每 $k$ 个连续的数中的最大值和最小值。 diff --git a/docs/ds/odt.md b/docs/ds/odt.md index 0dedb45d..c5d1f2c6 100644 --- a/docs/ds/odt.md +++ b/docs/ds/odt.md @@ -1,7 +1,7 @@ ## 名称简介 老司机树,ODT(Old Driver Tree),又名珂朵莉树(Chtholly Tree)。 -起源自[CF896C](https://codeforces.com/problemset/problem/896/C)。 +起源自 [CF896C](https://codeforces.com/problemset/problem/896/C) 。 ## 前置知识 @@ -18,7 +18,7 @@ 一般出题人不会 **刻意** 卡,但是不小心卡了就…… 如果要保证复杂度正确,必须保证数据随机。 -证明在[此](http://codeforces.com/blog/entry/56135?#comment-398940)。 +证明在 [此](http://codeforces.com/blog/entry/56135?#comment-398940) 。 ## 正文 @@ -90,7 +90,7 @@ void performance(int l, int r) { ## 习题 -- [「SCOI2010」序列操作](https://www.lydsy.com/JudgeOnline/problem.php?id=1858) -- [「SHOI2015」脑洞治疗仪](https://www.lydsy.com/JudgeOnline/problem.php?id=4592) -- [「Luogu 2787」理理思维](https://www.luogu.org/problemnew/show/P2787) -- [「Luogu 4979」矿洞:坍塌](https://www.luogu.org/problemnew/show/P4979) +- [「SCOI2010」序列操作](https://www.lydsy.com/JudgeOnline/problem.php?id=1858) +- [「SHOI2015」脑洞治疗仪](https://www.lydsy.com/JudgeOnline/problem.php?id=4592) +- [「Luogu 2787」理理思维](https://www.luogu.org/problemnew/show/P2787) +- [「Luogu 4979」矿洞:坍塌](https://www.luogu.org/problemnew/show/P4979) diff --git a/docs/ds/pairing-heap.md b/docs/ds/pairing-heap.md index 52d16674..d1390ad4 100644 --- a/docs/ds/pairing-heap.md +++ b/docs/ds/pairing-heap.md @@ -174,13 +174,13 @@ Node* decrease - key(Node* root, Node* x, LL v) { ### 复杂度分析 -见[配对堆的论文](http://www.cs.cmu.edu/~sleator/papers/pairing-heaps.pdf)。 +见 [配对堆的论文](http://www.cs.cmu.edu/~sleator/papers/pairing-heaps.pdf) 。 ### 参考文献 -1. [HOOCCOOH 的题解](https://hooccooh.blog.luogu.org/solution-p3377) +1. [HOOCCOOH 的题解](https://hooccooh.blog.luogu.org/solution-p3377) 2. 集训队论文《黄源河 -- 左偏树的特点及其应用》 -3. [《配对堆中文版》](https://wenku.baidu.com/view/f2527bc2bb4cf7ec4afed06d.html) -4. [维基百科 pairing heap 词条](https://en.wikipedia.org/wiki/Pairing_heap) -5. -6. (注:本条目所有图片均来自这里) +3. [《配对堆中文版》](https://wenku.baidu.com/view/f2527bc2bb4cf7ec4afed06d.html) +4. [维基百科 pairing heap 词条](https://en.wikipedia.org/wiki/Pairing_heap) +5. +6. (注:本条目所有图片均来自这里) diff --git a/docs/ds/persistent-balanced.md b/docs/ds/persistent-balanced.md index 13fdf0f2..2306de35 100644 --- a/docs/ds/persistent-balanced.md +++ b/docs/ds/persistent-balanced.md @@ -4,7 +4,7 @@ Split-Merge Treap ## 对于无旋 Treap 的提示 -看楼上的[Treap 词条](/ds/treap/) +看楼上的 [Treap 词条](/ds/treap/) **OI 常用的可持久化平衡树** 一般就是 **可持久化无旋转 Treap** 所以推荐首先学习楼上的 **无旋转 Treap** @@ -153,14 +153,14 @@ static int _merge(int _x, int _y) { ## 推荐的练手题 -1. [「Luogu P3919」可持久化数组(模板题)](https://www.luogu.org/problemnew/show/P3919) +1. [「Luogu P3919」可持久化数组(模板题)](https://www.luogu.org/problemnew/show/P3919) -2. [「Codeforces 702F」T-shirt](http://codeforces.com/problemset/problem/702/F) +2. [「Codeforces 702F」T-shirt](http://codeforces.com/problemset/problem/702/F) -3. [「Luogu P5055」可持久化文艺平衡树](https://www.luogu.org/problemnew/show/P5055) +3. [「Luogu P5055」可持久化文艺平衡树](https://www.luogu.org/problemnew/show/P5055) ## 另外 -1. 可持久化平衡树可以用来维护动态凸包,仙人掌等东西,如果读者有兴趣可以阅读相应的[ **计算几何** ](/geometry)知识,再来食用。 +1. 可持久化平衡树可以用来维护动态凸包,仙人掌等东西,如果读者有兴趣可以阅读相应的 [ **计算几何** ](/geometry) 知识,再来食用。 2. Zip Tree 作为一种新的数据结构在 2018.8 月由 Robert E. Tarjan - Caleb C. Levy - Stephen Timmel 提出,可以去了解一下~ diff --git a/docs/ds/persistent-heap.md b/docs/ds/persistent-heap.md index fe1c66b7..bd8ea722 100644 --- a/docs/ds/persistent-heap.md +++ b/docs/ds/persistent-heap.md @@ -4,7 +4,7 @@ ## 可持久化左偏树 -在学习本内容前,请先了解[左偏树](/ds/leftist-tree)的相关内容。 +在学习本内容前,请先了解 [左偏树](/ds/leftist-tree) 的相关内容。 回顾左偏树的合并过程,假设我们要合并分别以 $x,y$ 为根节点的两棵左偏树,且维护的左偏树满足小根堆的性质: diff --git a/docs/ds/persistent-in-bit.md b/docs/ds/persistent-in-bit.md index 7150f350..71162652 100644 --- a/docs/ds/persistent-in-bit.md +++ b/docs/ds/persistent-in-bit.md @@ -1,4 +1,4 @@ -[静态区间 k 小值 (POJ 2104 K-th Number)](http://poj.org/problem?id=2104)的问题可以用[主席树](/ds/persistent-seg/)在 $O(n\log_2 n)$ 的时间复杂度内解决。 + [静态区间 k 小值 (POJ 2104 K-th Number)](http://poj.org/problem?id=2104) 的问题可以用 [主席树](/ds/persistent-seg/) 在 $O(n\log_2 n)$ 的时间复杂度内解决。 如果区间变成动态的呢?即,如果还要求支持一种操作:单点修改某一位上的值,又该怎么办呢? @@ -6,7 +6,7 @@ ??? note " 例题[ZOJ 2112 Dynamic Rankings](http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1112)" -如果用[线段树套平衡树](/ds/balanced-in-seg/)中所论述的,用线段树套平衡树,即对于线段树的每一个节点,对于其所表示的区间维护一个平衡树,然后用二分来查找 $k$ 小值。由于每次查询操作都要覆盖多个区间,即有多个节点,但是平衡树并不能多个值一起查找,所以时间复杂度是 $O(n\log_2^3 n)$ ,并不是最优的。 +如果用 [线段树套平衡树](/ds/balanced-in-seg/) 中所论述的,用线段树套平衡树,即对于线段树的每一个节点,对于其所表示的区间维护一个平衡树,然后用二分来查找 $k$ 小值。由于每次查询操作都要覆盖多个区间,即有多个节点,但是平衡树并不能多个值一起查找,所以时间复杂度是 $O(n\log_2^3 n)$ ,并不是最优的。 思路是,把二分答案的操作和查询小于一个值的数的数量两种操作结合起来。最好的方法是使用 **线段树套主席树** 。 diff --git a/docs/ds/persistent-seg.md b/docs/ds/persistent-seg.md index 8d8687e6..d15191c9 100644 --- a/docs/ds/persistent-seg.md +++ b/docs/ds/persistent-seg.md @@ -1,9 +1,9 @@ ## 主席树 -主席树全称是可持久化权值线段树,参见[知乎讨论](https://www.zhihu.com/question/59195374)。 +主席树全称是可持久化权值线段树,参见 [知乎讨论](https://www.zhihu.com/question/59195374) 。 ???+warning "关于函数式线段树" - 函数式线段树是指使用函数式编程思想的线段树。在函数式编程思想中,将计算机运算视为数学函数,并避免可改变的状态或变量。不难发现,函数式线段树是[完全可持久化](/ds/persistent/#_2)的 + 函数式线段树是指使用函数式编程思想的线段树。在函数式编程思想中,将计算机运算视为数学函数,并避免可改变的状态或变量。不难发现,函数式线段树是 [完全可持久化](/ds/persistent/#_2) 的 面对眼前的区间第 $k$ 小问题,你该何从下手? @@ -112,6 +112,6 @@ int main() { ## 参考 - + - + diff --git a/docs/ds/persistent.md b/docs/ds/persistent.md index 7ebfe7ad..f2b164b2 100644 --- a/docs/ds/persistent.md +++ b/docs/ds/persistent.md @@ -8,4 +8,4 @@ ## 参考 - + diff --git a/docs/ds/queue.md b/docs/ds/queue.md index bff2cb06..3592cf2c 100644 --- a/docs/ds/queue.md +++ b/docs/ds/queue.md @@ -2,7 +2,7 @@ ## 队列 -队列,英文名是 queue,在 C++ STL 中有[std::queue](https://en.cppreference.com/w/cpp/container/queue)和[std::priority_queue](https://en.cppreference.com/w/cpp/container/priority_queue)。 +队列,英文名是 queue,在 C++ STL 中有 [std::queue](https://en.cppreference.com/w/cpp/container/queue) 和 [std::priority_queue](https://en.cppreference.com/w/cpp/container/priority_queue) 。 先进入队列的元素一定先出队列,因此队列通常也被称为先进先出(first in first out)表,简称 FIFO 表。 @@ -112,7 +112,7 @@ $$ ### 丢一半的复杂度 -似乎可以用[势能分析法](https://yhx-12243.github.io/OI-transit/records/cf601E.html)证明。其实本蒟蒻有一个很仙的想法。我们考虑这个双栈结构的整体复杂度。m 个事件,我们希望尽可能增加这个结构的复杂度。 +似乎可以用 [势能分析法](https://yhx-12243.github.io/OI-transit/records/cf601E.html) 证明。其实本蒟蒻有一个很仙的想法。我们考虑这个双栈结构的整体复杂度。m 个事件,我们希望尽可能增加这个结构的复杂度。 首先,如果全是插入操作的话显然是严格 $\Theta(m)$ 的,因为插入的复杂度是 $O(1)$ 的。 diff --git a/docs/ds/seg-in-seg.md b/docs/ds/seg-in-seg.md index d3dc88f8..ba881cb5 100644 --- a/docs/ds/seg-in-seg.md +++ b/docs/ds/seg-in-seg.md @@ -19,7 +19,7 @@ author: Chrogeek, HeRaNO, Dev-XYS, Dev-jqe ## 经典例题 -[陌上花开](https://www.lydsy.com/JudgeOnline/problem.php?id=3262)将第一维排序处理,然后用树套树维护第二维和第三维。 + [陌上花开](https://www.lydsy.com/JudgeOnline/problem.php?id=3262) 将第一维排序处理,然后用树套树维护第二维和第三维。 ## 示例代码 diff --git a/docs/ds/seg.md b/docs/ds/seg.md index e01c9937..3a26a0f3 100644 --- a/docs/ds/seg.md +++ b/docs/ds/seg.md @@ -236,7 +236,7 @@ int getsum(int l, int r, int s, int t, int p) { ## 线段树基础题推荐 -### [luogu P3372【模板】线段树 1](https://www.luogu.org/problem/P3372) +### [luogu P3372【模板】线段树 1](https://www.luogu.org/problem/P3372) ??? "参考代码" ```cpp @@ -295,7 +295,7 @@ int getsum(int l, int r, int s, int t, int p) { } ``` -### [luogu P3373【模板】线段树 2](https://www.luogu.org/problem/P3373) +### [luogu P3373【模板】线段树 2](https://www.luogu.org/problem/P3373) ??? "参考代码" ```cpp @@ -424,7 +424,7 @@ int getsum(int l, int r, int s, int t, int p) { } ``` -### [HihoCoder 1078 线段树的区间修改](https://cn.vjudge.net/problem/HihoCoder-1078) +### [HihoCoder 1078 线段树的区间修改](https://cn.vjudge.net/problem/HihoCoder-1078) ??? "参考代码" ```cpp @@ -486,7 +486,7 @@ int getsum(int l, int r, int s, int t, int p) { } ``` -### [2018 Multi-University Training Contest 5 Problem G. Glad You Came](http://acm.hdu.edu.cn/showproblem.php?pid=6356) +### [2018 Multi-University Training Contest 5 Problem G. Glad You Came](http://acm.hdu.edu.cn/showproblem.php?pid=6356) 维护一下每个区间的永久标记就可以了,最后在线段树上跑一边 dfs 统计结果即可。注意打标记的时候加个剪枝优化,否则会 T。 @@ -558,4 +558,4 @@ int getsum(int l, int r, int s, int t, int p) { ### 参考 -[immortalCO 大爷的博客](http://immortalco.blog.uoj.ac/blog/2102) + [immortalCO 大爷的博客](http://immortalco.blog.uoj.ac/blog/2102) diff --git a/docs/ds/sparse-table.md b/docs/ds/sparse-table.md index 836c376a..373ad7c6 100644 --- a/docs/ds/sparse-table.md +++ b/docs/ds/sparse-table.md @@ -6,7 +6,7 @@ RMQ 是英文 Range Maximum/Minimum Query 的缩写,表示区间最大(最 ## 引入 -[ST 表模板题](https://www.luogu.org/problemnew/show/P3865) + [ST 表模板题](https://www.luogu.org/problemnew/show/P3865) 题目大意:给定 $n$ 个数,有 $m$ 个询问,对于每个询问,你需要回答区间 $[x,y]$ 中的最大值 @@ -48,7 +48,7 @@ RMQ 是英文 Range Maximum/Minimum Query 的缩写,表示区间最大(最 ## 模板代码 -[ST 表模板题](https://www.luogu.org/problemnew/show/P3865) + [ST 表模板题](https://www.luogu.org/problemnew/show/P3865) ```cpp #include @@ -96,7 +96,7 @@ int main() { 1. 输入输出数据一般很多,建议开启输入输出优化 -2. 每次用[std::log](https://en.cppreference.com/w/cpp/numeric/math/log)重新计算 log 函数值并不值得,建议如下预处理 +2. 每次用 [std::log](https://en.cppreference.com/w/cpp/numeric/math/log) 重新计算 log 函数值并不值得,建议如下预处理 $$ \left\{\begin{aligned} @@ -111,12 +111,12 @@ $$ ## 练习 -[RMQ 模板题](https://www.luogu.org/problemnew/show/P3865) + [RMQ 模板题](https://www.luogu.org/problemnew/show/P3865) -[LCA 模板题](https://www.luogu.org/problemnew/show/P3379) + [LCA 模板题](https://www.luogu.org/problemnew/show/P3379) -[严格次小生成树](https://www.luogu.org/problemnew/show/P4180) + [严格次小生成树](https://www.luogu.org/problemnew/show/P4180) -[货车运输](https://www.luogu.org/problemnew/show/P1967) + [货车运输](https://www.luogu.org/problemnew/show/P1967) -[跑路](https://www.luogu.org/problemnew/show/P1613) + [跑路](https://www.luogu.org/problemnew/show/P1613) diff --git a/docs/ds/splay.md b/docs/ds/splay.md index 5be301e9..a5a139a5 100644 --- a/docs/ds/splay.md +++ b/docs/ds/splay.md @@ -418,21 +418,21 @@ int main() { 以下题目都是裸的 $\text{Splay}$ 维护二叉查找树。~~(直接套板子即可)~~ -- [【模板】普通平衡树](https://loj.ac/problem/104) -- [【模板】文艺平衡树](https://loj.ac/problem/105) -- [\[HNOI2002\]营业额统计](https://www.lydsy.com/JudgeOnline/problem.php?id=1588) -- [\[HNOI2004\]宠物收养所](https://www.lydsy.com/JudgeOnline/problem.php?id=1208) +- [【模板】普通平衡树](https://loj.ac/problem/104) +- [【模板】文艺平衡树](https://loj.ac/problem/105) +- [\[HNOI2002\]营业额统计](https://www.lydsy.com/JudgeOnline/problem.php?id=1588) +- [\[HNOI2004\]宠物收养所](https://www.lydsy.com/JudgeOnline/problem.php?id=1208) ## 练习题 -[luogu P4402\[Cerc2007\]robotic sort 机械排序](https://www.luogu.org/problemnew/show/P4402)/[bzoj 1552(权限题)](https://www.lydsy.com/JudgeOnline/problem.php?id=1552) + [luogu P4402\[Cerc2007\]robotic sort 机械排序](https://www.luogu.org/problemnew/show/P4402) / [bzoj 1552(权限题)](https://www.lydsy.com/JudgeOnline/problem.php?id=1552) -[二逼平衡树(树套树)](https://loj.ac/problem/106) + [二逼平衡树(树套树)](https://loj.ac/problem/106) -[bzoj 2827 千山鸟飞绝](https://www.lydsy.com/JudgeOnline/problem.php?id=2827) + [bzoj 2827 千山鸟飞绝](https://www.lydsy.com/JudgeOnline/problem.php?id=2827) -[bzoj 4923\[Lydsy1706 月赛\]K 小值查询](https://www.lydsy.com/JudgeOnline/problem.php?id=4923) + [bzoj 4923\[Lydsy1706 月赛\]K 小值查询](https://www.lydsy.com/JudgeOnline/problem.php?id=4923) * * * -> 本文部分内容引用于[algocode 算法博客](https://algocode.net),特别鸣谢! +> 本文部分内容引用于 [algocode 算法博客](https://algocode.net) ,特别鸣谢! diff --git a/docs/ds/treap.md b/docs/ds/treap.md index 78b72308..ee81a760 100644 --- a/docs/ds/treap.md +++ b/docs/ds/treap.md @@ -273,12 +273,12 @@ int main() { ## 练习题 -[普通平衡树](https://loj.ac/problem/104) + [普通平衡树](https://loj.ac/problem/104) -[文艺平衡树(Splay)](https://loj.ac/problem/105) + [文艺平衡树(Splay)](https://loj.ac/problem/105) -[\[ZJOI2006\]书架](https://www.lydsy.com/JudgeOnline/problem.php?id=1861) + [\[ZJOI2006\]书架](https://www.lydsy.com/JudgeOnline/problem.php?id=1861) -[\[NOI2005\]维护数列](https://www.lydsy.com/JudgeOnline/problem.php?id=1500) + [\[NOI2005\]维护数列](https://www.lydsy.com/JudgeOnline/problem.php?id=1500) -[CF 702F T-Shirts](http://codeforces.com/problemset/problem/702/F) + [CF 702F T-Shirts](http://codeforces.com/problemset/problem/702/F) diff --git a/docs/ds/tree-decompose.md b/docs/ds/tree-decompose.md index 5846fabb..3d8bc57d 100644 --- a/docs/ds/tree-decompose.md +++ b/docs/ds/tree-decompose.md @@ -2,9 +2,9 @@ author: ouuan, Ir1d, TrisolarisHD, Xeonacid ## 树分块的方式 -可以参考[OI Wiki/莫队算法/真 - 树上莫队](/misc/mo-algo/#_14)。 +可以参考 [OI Wiki/莫队算法/真 - 树上莫队](/misc/mo-algo/#_14) 。 -也可以参考[ouuan 的博客/莫队、带修莫队、树上莫队详解/树上莫队](https://ouuan.github.io/莫队、带修莫队、树上莫队详解/#树上莫队)。 +也可以参考 [ouuan 的博客/莫队、带修莫队、树上莫队详解/树上莫队](https://ouuan.github.io/莫队、带修莫队、树上莫队详解/#树上莫队) 。 树上莫队同样可以参考以上两篇文章。 @@ -14,7 +14,7 @@ author: ouuan, Ir1d, TrisolarisHD, Xeonacid 顺带提一句,“gty 的妹子树”的树分块做法可以被菊花图卡掉。 -### [BZOJ4763 雪辉](https://www.lydsy.com/JudgeOnline/problem.php?id=4763) +### [BZOJ4763 雪辉](https://www.lydsy.com/JudgeOnline/problem.php?id=4763) 先进行树分块,然后对每个块的关键点,预处理出它到祖先中每个关键点的路径上颜色的 bitset,以及每个关键点的最近关键点祖先,复杂度是 $O(n\sqrt n+\frac{nc}{32})$ ,其中 $n\sqrt n$ 是暴力从每个关键点向上跳的复杂度, $\frac{nc}{32}$ 是把 $O(n)$ 个 `bitset` 存下来的复杂度。 @@ -166,7 +166,7 @@ author: ouuan, Ir1d, TrisolarisHD, Xeonacid } ``` -### [BZOJ4812 由乃打扑克](https://www.lydsy.com/JudgeOnline/problem.php?id=4812) +### [BZOJ4812 由乃打扑克](https://www.lydsy.com/JudgeOnline/problem.php?id=4812) 这题和上一题基本一样,唯一的区别是得到 `bitset` 后如何计算答案。 @@ -174,4 +174,4 @@ author: ouuan, Ir1d, TrisolarisHD, Xeonacid 正解是每 $16$ 位一起算,先预处理出 $2^{16}$ 种可能的情况高位连续 $1$ 的个数、低位连续 $1$ 的个数以及中间的贡献。只不过这样要手写 `bitset` ,因为标准库的 `bitset` 不能取某 $16$ 位…… -代码可以参考[这篇博客](https://www.cnblogs.com/FallDream/p/bzoj4763.html)。 +代码可以参考 [这篇博客](https://www.cnblogs.com/FallDream/p/bzoj4763.html) 。 diff --git a/docs/geometry/2d.md b/docs/geometry/2d.md index 1507c7a6..bce1f45c 100644 --- a/docs/geometry/2d.md +++ b/docs/geometry/2d.md @@ -19,7 +19,7 @@ - 向量(包括向量积) - 极坐标与极坐标系 -请先阅读[OI Wiki - 数学 - 杂项](/math/misc/)。 +请先阅读 [OI Wiki - 数学 - 杂项](/math/misc/) 。 ## 图形的记录 @@ -147,11 +147,11 @@ $$ > 某同学:我还能 %$#^%\*(%&)) -在计算几何中,这个问题被称为[PIP 问题](https://en.wikipedia.org/wiki/Point_in_polygon),已经有一些成熟的解决方法,下面依次介绍。 +在计算几何中,这个问题被称为 [PIP 问题](https://en.wikipedia.org/wiki/Point_in_polygon) ,已经有一些成熟的解决方法,下面依次介绍。 #### 光线投射算法 (Ray casting algorithm) -在[这里](https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html)可以看到最原始的思路。 +在 [这里](https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html) 可以看到最原始的思路。 我们先特判一些特殊情况,比如「这个点离多边形太远了」。考虑一个能够完全覆盖该多边形的最小矩形,如果这个点不在这个矩形范围内,那么这个点一定不在多边形内。这样的矩形很好求,只需要知道多边形横坐标与纵坐标的最小值和最大值,坐标两两组合成四个点,就是这个矩形的四个顶点了。 @@ -159,7 +159,7 @@ $$ 我们考虑以该点为端点引出一条射线,如果这条射线与多边形有奇数个交点,则该点在多边形内部,否则该点在多边形外部,我们简记为 **奇内偶外** 。这个算法同样被称为奇偶规则 (Even-odd rule)。 -由于[Jordan curve theorem](https://en.wikipedia.org/wiki/Jordan_curve_theorem),我们知道,这条射线每次与多边形的一条边相交,就切换一次与多边形的内外关系,所以统计交点数的奇偶即可。 +由于 [Jordan curve theorem](https://en.wikipedia.org/wiki/Jordan_curve_theorem) ,我们知道,这条射线每次与多边形的一条边相交,就切换一次与多边形的内外关系,所以统计交点数的奇偶即可。 这样的射线怎么取?可以随机取这条射线所在直线的斜率,建议为无理数以避免出现射线与多边形某边重合的情况。 @@ -237,7 +237,7 @@ $$ 一般来说,这类题需要先枚举一个极点,然后计算出其他点的极坐标,在极坐标系下按极角的顺序解决问题。 -#### 例题[「JOI Spring Camp 2014 Day4」两个人的星座](https://www.ioi-jp.org/camp/2014/2014-sp-tasks/2014-sp-d4.pdf) +#### 例题 [「JOI Spring Camp 2014 Day4」两个人的星座](https://www.ioi-jp.org/camp/2014/2014-sp-tasks/2014-sp-d4.pdf) 平面内有 $n$ 个点,有三种颜色,每个点的颜色是三种中的一种。求不相交的三色三角形对数。 $6\le n\le 3000$ 。 diff --git a/docs/geometry/convex-hull.md b/docs/geometry/convex-hull.md index 99640f9a..55cead72 100644 --- a/docs/geometry/convex-hull.md +++ b/docs/geometry/convex-hull.md @@ -72,12 +72,12 @@ $$ ### 例题 -[UVA11626 Convex Hull](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=78&page=show_problem&problem=2673) + [UVA11626 Convex Hull](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=78&page=show_problem&problem=2673) -[洛谷 P2742\[USACO5.1\]圈奶牛 Fencing the Cows](https://www.luogu.org/problemnew/show/P2742) + [洛谷 P2742\[USACO5.1\]圈奶牛 Fencing the Cows](https://www.luogu.org/problemnew/show/P2742) -[POJ1873 The Fortified Forest](http://poj.org/problem?id=1873) + [POJ1873 The Fortified Forest](http://poj.org/problem?id=1873) -[POJ1113 Wall](http://poj.org/problem?id=1113) + [POJ1113 Wall](http://poj.org/problem?id=1113) -[洛谷 P3829\[SHOI2012\]信用卡凸包](https://www.luogu.org/problemnew/show/P3829) + [洛谷 P3829\[SHOI2012\]信用卡凸包](https://www.luogu.org/problemnew/show/P3829) diff --git a/docs/geometry/distance.md b/docs/geometry/distance.md index 52d83a9e..02d3c905 100644 --- a/docs/geometry/distance.md +++ b/docs/geometry/distance.md @@ -42,7 +42,7 @@ $$ \end{gathered} $$ -[NOIP2017 提高组 奶酪](https://loj.ac/problem/2317)就运用了这一知识,可以作为欧氏距离的例题。 + [NOIP2017 提高组 奶酪](https://loj.ac/problem/2317) 就运用了这一知识,可以作为欧氏距离的例题。 以此类推,我们就得到了 $n$ 维空间中欧氏距离的距离公式:对于 $\vec A(x_{11}, x_{12}, \cdots,x_{1n}) ,~ \vec B(x_{21}, x_{22}, \cdots,x_{2n})$ ,有 @@ -116,7 +116,7 @@ $$ ### 例题 1 -[USACO2004OPEN Cave Cows 3 洞穴里的牛之三](https://www.luogu.org/problemnew/show/P5098) + [USACO2004OPEN Cave Cows 3 洞穴里的牛之三](https://www.luogu.org/problemnew/show/P5098) 根据题意,对于式子 $|x_1-x_2|+|y_1-y_2|$ ,我们可以假设 $x_1 - x_2 \geq 0$ ,根据 $y_1 - y_2$ 的符号分成两种情况: @@ -161,7 +161,7 @@ int main() { ## 切比雪夫距离 -切比雪夫距离(Chebyshev distance)是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。——_来源:[维基百科](https://zh.wikipedia.org/wiki/%E5%88%87%E6%AF%94%E9%9B%AA%E5%A4%AB%E8%B7%9D%E7%A6%BB)_ +切比雪夫距离(Chebyshev distance)是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。——_来源: [维基百科](https://zh.wikipedia.org/wiki/%E5%88%87%E6%AF%94%E9%9B%AA%E5%A4%AB%E8%B7%9D%E7%A6%BB) _ 在二维空间内,两个点之间的切比雪夫距离为它们横坐标之差的绝对值与纵坐标之差的绝对值的最大值。设点 $A(x_1,y_1),B(x_2,y_2)$ ,则 $A,B$ 之间的切比雪夫距离用公式可以表示为: @@ -280,11 +280,11 @@ $$ ### 例题 2 -[ **P4648** ](https://www.luogu.org/problemnew/show/P4648)>(曼哈顿距离转切比雪夫距离) + [ **P4648** ](https://www.luogu.org/problemnew/show/P4648) >(曼哈顿距离转切比雪夫距离) -[ **P3964** ](https://www.luogu.org/problemnew/show/P3964)>(切比雪夫距离转曼哈顿距离) + [ **P3964** ](https://www.luogu.org/problemnew/show/P3964) >(切比雪夫距离转曼哈顿距离) -最后给出[ **P5098** ](https://www.luogu.org/problemnew/show/P5098)的第二种解法: +最后给出 [ **P5098** ](https://www.luogu.org/problemnew/show/P5098) 的第二种解法: 我们考虑将题目所求的曼哈顿距离转化为切比雪夫距离,即把每个点的坐标 $(x,y)$ 变为 $(x + y, x - y)$ 。 @@ -340,4 +340,4 @@ int main() { 我们可以简单的认为对两个串进行异或运算,结果为 1 的数量就是两个串的汉明距离。 -部分内容搬运自[浅谈三种常见的距离算法](https://www.luogu.org/blog/xuxing/Distance-Algorithm),感谢作者 xuxing 的授权。 +部分内容搬运自 [浅谈三种常见的距离算法](https://www.luogu.org/blog/xuxing/Distance-Algorithm) ,感谢作者 xuxing 的授权。 diff --git a/docs/geometry/half-plane.md b/docs/geometry/half-plane.md index 053f8ade..22f9723d 100644 --- a/docs/geometry/half-plane.md +++ b/docs/geometry/half-plane.md @@ -143,8 +143,8 @@ t[r + 1] = its(q[l + 1], q[r]); //再求出新的交点 ## 练习 -[POJ 2451 Uyuw's Concert](http://poj.org/problem?id=2451)注意边界 + [POJ 2451 Uyuw's Concert](http://poj.org/problem?id=2451) 注意边界 -[POJ 1279 Art Gallery](http://poj.org/problem?id=1279)求多边形的核 + [POJ 1279 Art Gallery](http://poj.org/problem?id=1279) 求多边形的核 -[\[CQOI2006\]凸多边形](https://www.lydsy.com/JudgeOnline/problem.php?id=2618) + [\[CQOI2006\]凸多边形](https://www.lydsy.com/JudgeOnline/problem.php?id=2618) diff --git a/docs/geometry/index.md b/docs/geometry/index.md index 610b1bcc..0cdd4551 100644 --- a/docs/geometry/index.md +++ b/docs/geometry/index.md @@ -9,7 +9,7 @@ 首先你要有一点数学几何基础 -请先阅读[数学杂项](/math/misc/)部分。 +请先阅读 [数学杂项](/math/misc/) 部分。 ### 以下是你可以在本部分找到的知识(部分未完成,待补充) diff --git a/docs/geometry/nearest-points.md b/docs/geometry/nearest-points.md index e3f0e072..52586323 100644 --- a/docs/geometry/nearest-points.md +++ b/docs/geometry/nearest-points.md @@ -2,7 +2,7 @@ 给定 $n$ 个二维平面上的点,求一组欧几里得距离最近的点对。 -下面我们介绍一种时间复杂度为 $O(n\log n)$ 的分治算法来解决这个问题。该算法在 1975 年由[Franco P. Preparata](https://en.wikipedia.org/wiki/Franco_P._Preparata)提出,Preparata 和[Michael Ian Shamos](https://en.wikipedia.org/wiki/Michael_Ian_Shamos)证明了该算法在决策树模型下是最优的。 +下面我们介绍一种时间复杂度为 $O(n\log n)$ 的分治算法来解决这个问题。该算法在 1975 年由 [Franco P. Preparata](https://en.wikipedia.org/wiki/Franco_P._Preparata) 提出,Preparata 和 [Michael Ian Shamos](https://en.wikipedia.org/wiki/Michael_Ian_Shamos) 证明了该算法在决策树模型下是最优的。 ## 算法 @@ -133,12 +133,12 @@ rec(0, n - 1); ## 习题 -- [UVA 10245 "The Closest Pair Problem"\[难度:低\]](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1186) -- [SPOJ #8725 CLOPPAIR "Closest Point Pair"\[难度:低\]](https://www.spoj.com/problems/CLOPPAIR/) -- [CODEFORCES Team Olympiad Saratov - 2011 "Minimum amount"\[难度:中\]](http://codeforces.com/contest/120/problem/J) -- [Google CodeJam 2009 Final "Min Perimeter"\[难度:中\]](https://code.google.com/codejam/contest/311101/dashboard#s=a&a=1) -- [SPOJ #7029 CLOSEST "Closest Triple"\[难度:中\]](https://www.spoj.com/problems/CLOSEST/) +- [UVA 10245 "The Closest Pair Problem"\[难度:低\]](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1186) +- [SPOJ #8725 CLOPPAIR "Closest Point Pair"\[难度:低\]](https://www.spoj.com/problems/CLOPPAIR/) +- [CODEFORCES Team Olympiad Saratov - 2011 "Minimum amount"\[难度:中\]](http://codeforces.com/contest/120/problem/J) +- [Google CodeJam 2009 Final "Min Perimeter"\[难度:中\]](https://code.google.com/codejam/contest/311101/dashboard#s=a&a=1) +- [SPOJ #7029 CLOSEST "Closest Triple"\[难度:中\]](https://www.spoj.com/problems/CLOSEST/) * * * - **本页面主要译自博文[Нахождение пары ближайших точек](http://e-maxx.ru/algo/nearest_points)与其英文翻译版[Finding the nearest pair of points](https://github.com/e-maxx-eng/e-maxx-eng/blob/master/src/geometry/nearest_points.md)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Нахождение пары ближайших точек](http://e-maxx.ru/algo/nearest_points) 与其英文翻译版 [Finding the nearest pair of points](https://github.com/e-maxx-eng/e-maxx-eng/blob/master/src/geometry/nearest_points.md) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/geometry/pick.md b/docs/geometry/pick.md index 46e536be..e22bc6dd 100644 --- a/docs/geometry/pick.md +++ b/docs/geometry/pick.md @@ -2,7 +2,7 @@ Pick 定理:给定顶点座标均是整点(或正方形格子点)的简单多边形,皮克定理说明了其面积 ${\displaystyle A}$ 和内部格点数目 ${\displaystyle i}$ 、边上格点数目 ${\displaystyle b}$ 的关系: ${\displaystyle A=i+{\frac {b}{2}}-1}$ 。 -具体证明:[Pick's theorem](https://en.wikipedia.org/wiki/Pick%27s_theorem) +具体证明: [Pick's theorem](https://en.wikipedia.org/wiki/Pick%27s_theorem) 它有以下推广: diff --git a/docs/geometry/random-incremental.md b/docs/geometry/random-incremental.md index 1fa5e0fc..b716fc57 100644 --- a/docs/geometry/random-incremental.md +++ b/docs/geometry/random-incremental.md @@ -109,12 +109,12 @@ int main() { ## 练习 -[BZOJ 1337\[最小圆覆盖\]](http://www.lydsy.com/JudgeOnline/problem.php?id=1337)[BZOJ 2732\[HNOI2012 射箭\]](http://www.lydsy.com/JudgeOnline/problem.php?id=2732) + [BZOJ 1337\[最小圆覆盖\]](http://www.lydsy.com/JudgeOnline/problem.php?id=1337) [BZOJ 2732\[HNOI2012 射箭\]](http://www.lydsy.com/JudgeOnline/problem.php?id=2732) ## 参考资料 - + - + - + diff --git a/docs/geometry/scanning.md b/docs/geometry/scanning.md index 828e2f01..9787048c 100644 --- a/docs/geometry/scanning.md +++ b/docs/geometry/scanning.md @@ -33,7 +33,7 @@ - 如图所示,我们可以把整个矩形分成如图各个颜色不同的小矩形,那么这个小矩形的高就是我们扫过的距离,那么剩下了一个变量,那就是矩形的长一直在变化。 - 我们的线段树就是为了维护矩形的长,我们给每一个矩形的上下边进行标记,下面的边标记为 1,上面的边标记为 -1,每遇到一个矩形时,我们知道了标记为 1 的边,我们就加进来这一条矩形的长,等到扫描到 -1 时,证明这一条边需要删除,就删去,利用 1 和 -1 可以轻松的到这种状态。 - 还要注意这里的线段树指的并不是线段的一个端点,而指的是一个区间,所以我们要计算的是 $r+1$ 和 $r-1$ 。 -- 需要[离散化](/misc/discrete/)。 +- 需要 [离散化](/misc/discrete/) 。 ### 代码 @@ -133,16 +133,16 @@ int main() { ## 练习 -- [「HDU1542」Atlantis](http://acm.hdu.edu.cn/showproblem.php?pid=1542) +- [「HDU1542」Atlantis](http://acm.hdu.edu.cn/showproblem.php?pid=1542) -- [「HDU1828」Picture](http://acm.hdu.edu.cn/showproblem.php?pid=1828) +- [「HDU1828」Picture](http://acm.hdu.edu.cn/showproblem.php?pid=1828) -- [「HDU3265」Posters](http://acm.hdu.edu.cn/showproblem.php?pid=3265) +- [「HDU3265」Posters](http://acm.hdu.edu.cn/showproblem.php?pid=3265) ## 参考资料 -- +- -- +- -- +- diff --git a/docs/graph/2-sat.md b/docs/graph/2-sat.md index 02659cf7..5a9a826f 100644 --- a/docs/graph/2-sat.md +++ b/docs/graph/2-sat.md @@ -12,7 +12,7 @@ ## 常用解决方法 -### Tarjan[SCC 缩点](/graph/scc) +### Tarjan [SCC 缩点](/graph/scc) 算法考究在建图这点,我们举个例子来讲: @@ -75,7 +75,7 @@ struct Twosat { ## 例题 -### **HDU3062[Party](http://acm.hdu.edu.cn/showproblem.php?pid=3062)** +### **HDU3062 [Party](http://acm.hdu.edu.cn/showproblem.php?pid=3062) ** > 题面:有 n 对夫妻被邀请参加一个聚会,因为场地的问题,每对夫妻中只有 $1$ 人可以列席。在 $2n$ 个人中,某些人之间有着很大的矛盾(当然夫妻之间是没有矛盾的),有矛盾的 $2$ 个人是不会同时出现在聚会上的。有没有可能会有 $n$ 个人同时列席? @@ -163,6 +163,6 @@ int main() { ## 练习题 -HDU1814[和平委员会](http://acm.hdu.edu.cn/showproblem.php?pid=1814) +HDU1814 [和平委员会](http://acm.hdu.edu.cn/showproblem.php?pid=1814) -POJ3683[牧师忙碌日](http://poj.org/problem?id=3683) +POJ3683 [牧师忙碌日](http://poj.org/problem?id=3683) diff --git a/docs/graph/basic.md b/docs/graph/basic.md index bcf99e72..4f210056 100644 --- a/docs/graph/basic.md +++ b/docs/graph/basic.md @@ -6,7 +6,7 @@ 这样做有个缺点,每次想要知道两个点之间是否有连边(或者说一条边是否存在),都需要在数组里进行一番查找。而且如果没有对边事先排序的话,就不能使用二分查找的方法( $O(\log n)$ ),而是每次只能按顺序找( $O(n)$ ),成本较高。 -什么时候会用到这个方法呢?最简单的一个例子是使用 Kruskal 算法求[最小生成树](/graph/mst)的时候。 +什么时候会用到这个方法呢?最简单的一个例子是使用 Kruskal 算法求 [最小生成树](/graph/mst) 的时候。 ### 邻接矩阵 @@ -36,7 +36,7 @@ 其中 `head[i]` 用来存以 $i$ 为起点的边, `edge` 数组是边表。 -那么什么是前向星呢?事先把 `edge` 数组排个序即可。这里可以使用[基数排序](/basic/radix-sort)做到 $O(m)$ 。 +那么什么是前向星呢?事先把 `edge` 数组排个序即可。这里可以使用 [基数排序](/basic/radix-sort) 做到 $O(m)$ 。 ## 图的基本概念 @@ -70,11 +70,11 @@ cycle,也称为 `环` ,是起点和终点相同的路径。 如果无向图 $G$ 中任意两个节点连通,称其为是连通的。 -### [强连通](/graph/scc) +### [强连通](/graph/scc) 有向图 $G$ 强连通是指, $G$ 中任意两个节点连通。 -### [弱连通](/graph/bcc) +### [弱连通](/graph/bcc) 有向图 $G$ 弱连通是指, $G$ 中的所有边替换为无向边后, $G$ 为连通图。 @@ -88,13 +88,13 @@ cycle,也称为 `环` ,是起点和终点相同的路径。 ### 点割集 -设图 $G = $ ,若存在 $V' \subset V$ 且 $V' \neq \emptyset$ ,使得 $p(G-V') > p(G)$ ,而对于任意的 $V'' \subset V'$ ,均有 $p(G-V'')=p(G)$ ,则称 $V'$ 是 $G$ 的点割集。特别地,若 $V'$ 是 $G$ 的点割集,且 $V'$ 是单元集,即 $V'=\{v\}$ ,则称 $v$ 为[割点](/graph/bridge/)。 +设图 $G = $ ,若存在 $V' \subset V$ 且 $V' \neq \emptyset$ ,使得 $p(G-V') > p(G)$ ,而对于任意的 $V'' \subset V'$ ,均有 $p(G-V'')=p(G)$ ,则称 $V'$ 是 $G$ 的点割集。特别地,若 $V'$ 是 $G$ 的点割集,且 $V'$ 是单元集,即 $V'=\{v\}$ ,则称 $v$ 为 [割点](/graph/bridge/) 。 ( $p(G)$ 表示图 G 的连通分支(连通块)的个数) ### 边割集 -设图 $G = $ ,若存在 $E' \subset E$ 且 $E' \neq \emptyset$ ,使得 $ps(G-E') > p(G)$ ,而对于任意的 $E'' \subset E'$ ,均有 $p(G-E'')=p(G)$ ,则称 $E'$ 是 $G$ 的边割集(或简称为割集)。特别地,若 $E'$ 是 $G$ 的边割集,且 $E'$ 是单元集,即 $E'=\{e\}$ ,则称 $e$ 为[桥](/graph/bridge/)。 +设图 $G = $ ,若存在 $E' \subset E$ 且 $E' \neq \emptyset$ ,使得 $ps(G-E') > p(G)$ ,而对于任意的 $E'' \subset E'$ ,均有 $p(G-E'')=p(G)$ ,则称 $E'$ 是 $G$ 的边割集(或简称为割集)。特别地,若 $E'$ 是 $G$ 的边割集,且 $E'$ 是单元集,即 $E'=\{e\}$ ,则称 $e$ 为 [桥](/graph/bridge/) 。 ( $p(G)$ 表示图 G 的连通分支(连通块)的个数) @@ -152,7 +152,7 @@ cycle,也称为 `环` ,是起点和终点相同的路径。 一般来说,路径的长度在数值上等于路径的边数,或者如果边是带权的,则是路径的边权和。 -### [最短路径](/graph/shortest-path) +### [最短路径](/graph/shortest-path) 两个节点之间,长度最小的路径。 diff --git a/docs/graph/bcc.md b/docs/graph/bcc.md index 3ee677fc..ea3a32c4 100644 --- a/docs/graph/bcc.md +++ b/docs/graph/bcc.md @@ -1,12 +1,12 @@ ## 简介 -在阅读下列内容之前,请务必了解[图论基础](/graph/basic#_19)部分。 +在阅读下列内容之前,请务必了解 [图论基础](/graph/basic#_19) 部分。 -相关阅读:[割点和桥](/graph/bridge/) +相关阅读: [割点和桥](/graph/bridge/) ## 定义 -割点和桥更严谨的定义参见[图论基础](/graph/basic#_19)。 +割点和桥更严谨的定义参见 [图论基础](/graph/basic#_19) 。 在一张连通的无向图中,对于两个点 $u$ 和 $v$ ,如果无论删去哪条边(只能删去一条)都不能使它们不连通,我们就说 $u$ 和 $v$ **边双连通** 。 diff --git a/docs/graph/bfs.md b/docs/graph/bfs.md index 215e213c..71719204 100644 --- a/docs/graph/bfs.md +++ b/docs/graph/bfs.md @@ -1,6 +1,6 @@ author: Ir1d, greyqz, yjl9903, Anguei, TrisolarisHD, ChungZH, Xeonacid, ylxmf2005 -BFS 全称是[Breadth First Search](https://en.wikipedia.org/wiki/Breadth-first_search),中文名是宽度优先搜索,也叫广度优先搜索。 +BFS 全称是 [Breadth First Search](https://en.wikipedia.org/wiki/Breadth-first_search) ,中文名是宽度优先搜索,也叫广度优先搜索。 是图上最基础、最重要的搜索算法之一。 @@ -88,7 +88,7 @@ void restore(int x) { 在实现 BFS 的时候,我们把未被访问过的节点放在一个称为 open 的容器中,而把已经访问过了的节点放在 closed 容器中。 -## [在树/图上 BFS](/graph/traverse) +## [在树/图上 BFS](/graph/traverse) ## 应用 @@ -103,11 +103,11 @@ void restore(int x) { ## 例题 -- [LOJ#2317.「NOIP2017」奶酪](https://loj.ac/problem/2317) +- [LOJ#2317.「NOIP2017」奶酪](https://loj.ac/problem/2317) ## 参考 - + ### BFS 序列 @@ -155,7 +155,7 @@ while (队列不为空) { ### 例题 -### [Codeforces 173B](http://codeforces.com/problemset/problem/173/B) +### [Codeforces 173B](http://codeforces.com/problemset/problem/173/B) 一个 $n \times m$ 的图,现在有一束激光从左上角往右边射出,每遇到 '#',你可以选择光线往四个方向射出,或者什么都不做,问最少需要多少个 '#' 往四个方向射出才能使光线在第 $n$ 行往右边射出。 @@ -226,7 +226,7 @@ int main() { ## 优先队列 BFS -优先队列,相当于一个二叉堆,STL 中提供了[ `std::priority_queue` ](/ds/stl/priority_queue/),可以方便我们使用优先队列。 +优先队列,相当于一个二叉堆,STL 中提供了 [ `std::priority_queue` ](/ds/stl/priority_queue/) ,可以方便我们使用优先队列。 在基于优先队列的 BFS 中,我们每次从队首取出代价最小的结点进行进一步搜索。容易证明这个贪心思想是正确的,因为从这个结点开始扩展的搜索,一定不会更新原来那些代价更高的结点。换句话说,其余那些代价更高的结点,我们不回去考虑更新它。 @@ -234,4 +234,4 @@ int main() { 相对于普通队列的 BFS,时间复杂度多了一个 $\log$ ,毕竟要维护这个优先队列嘛。不过普通 BFS 有可能每个结点入队、出队多次,时间复杂度会达到 $O(n^2)$ ,不是 $O(n)$ 。所以优先队列 BFS 通常还是快的。 -诶?这怎么听起来这么像堆优化的[Dijkstra](/graph/shortest-path/#dijkstra)算法呢?事实上,堆优化 Dijkstra 就是优先队列 BFS。 +诶?这怎么听起来这么像堆优化的 [Dijkstra](/graph/shortest-path/#dijkstra) 算法呢?事实上,堆优化 Dijkstra 就是优先队列 BFS。 diff --git a/docs/graph/bi-graph.md b/docs/graph/bi-graph.md index 7cdbe688..1ea2b718 100644 --- a/docs/graph/bi-graph.md +++ b/docs/graph/bi-graph.md @@ -8,7 +8,7 @@ ![](./images/bi-graph.png) -(图源[英文维基](https://en.wikipedia.org/wiki/Bipartite_graph)) +(图源 [英文维基](https://en.wikipedia.org/wiki/Bipartite_graph) ) ## 性质 @@ -25,7 +25,7 @@ 显然,直接枚举答案集合的话实在是太慢了,我们需要更高效的方法。 -考虑上文提到的性质,我们可以使用[DFS(图论)](/graph/dfs)或者[BFS](/graph/bfs)来遍历这张图。如果发现了奇环,那么就不是二分图,否则是。 +考虑上文提到的性质,我们可以使用 [DFS(图论)](/graph/dfs) 或者 [BFS](/graph/bfs) 来遍历这张图。如果发现了奇环,那么就不是二分图,否则是。 ## 应用 diff --git a/docs/graph/bridge.md b/docs/graph/bridge.md index 594ffba6..32e619d5 100644 --- a/docs/graph/bridge.md +++ b/docs/graph/bridge.md @@ -1,6 +1,6 @@ -相关阅读:[双连通分量](/graph/bcc/), +相关阅读: [双连通分量](/graph/bcc/) , -割点和桥更严谨的定义参见[图论基础](/graph/basic#_19)。 +割点和桥更严谨的定义参见 [图论基础](/graph/basic#_19) 。 ## 割点 @@ -44,7 +44,7 @@ low[u] = min(low[u], num[v]); ### 例题 -[洛谷 P3388【模板】割点(割顶)](https://www.luogu.org/problemnew/show/P3388) + [洛谷 P3388【模板】割点(割顶)](https://www.luogu.org/problemnew/show/P3388) ### Code diff --git a/docs/graph/dag.md b/docs/graph/dag.md index 02a4e0cf..cd7d6619 100644 --- a/docs/graph/dag.md +++ b/docs/graph/dag.md @@ -6,7 +6,7 @@ ## 性质 -- 能[拓扑排序](/graph/topo)的图,一定是有向无环图; +- 能 [拓扑排序](/graph/topo) 的图,一定是有向无环图; 如果有环,那么环上的任意两个节点在任意序列中都不满足条件了。 @@ -18,6 +18,6 @@ 如何判定一个图是否是有向无环图呢? -检验它是否可以进行[拓扑排序](/graph/topo)即可。 +检验它是否可以进行 [拓扑排序](/graph/topo) 即可。 -当然也有另外的方法,可以对图进行一遍[DFS](/search/dfs),在得到的 DFS 树上看看有没有连向祖先的非树边(返祖边)。如果有的话,那就有环了。 +当然也有另外的方法,可以对图进行一遍 [DFS](/search/dfs) ,在得到的 DFS 树上看看有没有连向祖先的非树边(返祖边)。如果有的话,那就有环了。 diff --git a/docs/graph/dfs.md b/docs/graph/dfs.md index 7788a747..2e1cd5b3 100644 --- a/docs/graph/dfs.md +++ b/docs/graph/dfs.md @@ -1,10 +1,10 @@ author: Ir1d, greyqz, yjl9903, partychicken, ChungZH, qq1010903229, TrisolarisHD, Acfboy -DFS 全称是[Depth First Search](https://en.wikipedia.org/wiki/Depth-first_search),中文名是深度优先搜索,是一种用于遍历或搜索树或图的算法。所谓深度优先,就是说每次都尝试向更深的节点走。 +DFS 全称是 [Depth First Search](https://en.wikipedia.org/wiki/Depth-first_search) ,中文名是深度优先搜索,是一种用于遍历或搜索树或图的算法。所谓深度优先,就是说每次都尝试向更深的节点走。 该算法讲解时常常与 BFS 并列,但两者除了都能遍历图的联通块以外,用途完全不同,很少有能混用两种算法的情况。 -DFS 常常用来指代用递归函数实现的搜索,但实际上两者并不一样。有关该类搜索思想请参阅[DFS(搜索)](/search/dfs). +DFS 常常用来指代用递归函数实现的搜索,但实际上两者并不一样。有关该类搜索思想请参阅 [DFS(搜索)](/search/dfs) . DFS 最显著的特征在于其 **递归调用自身** 。同时与 BFS 类似,DFS 会对其访问过的点打上访问标记,在遍历图时跳过已打过标记的点,以确保 **每个点仅访问一次** 。符合以上两条规则的函数,便是广义上的 DFS。 @@ -65,4 +65,4 @@ DFS 进入某个节点的时候记录一个左括号 `(` ,退出某个节点 在 DFS 过程中,通过记录每个节点从哪个点访问而来,可以建立一个树结构,称为 DFS 树。DFS 树是原图的一个生成树。 -DFS 树有很多[性质](/graph/scc/#dfs),比如用来求[强连通分量](/graph/scc) +DFS 树有很多 [性质](/graph/scc/#dfs) ,比如用来求 [强连通分量](/graph/scc) diff --git a/docs/graph/diff-constraints.md b/docs/graph/diff-constraints.md index 8a71790e..73640068 100644 --- a/docs/graph/diff-constraints.md +++ b/docs/graph/diff-constraints.md @@ -12,7 +12,7 @@ author: Ir1d, Anguei, hsfzLZH1 ## 常用变形技巧 -### 例题[luogu P1993 小 K 的农场](https://www.luogu.org/problemnew/show/P1993) +### 例题 [luogu P1993 小 K 的农场](https://www.luogu.org/problemnew/show/P1993) 题目大意:求解差分约束系统,有 $m$ 条约束条件,每条都为形如 $x_a-x_b\geq c_k$ , $x_a-x_b\leq c_k$ 或 $x_a=x_b$ 的形式,判断该差分约束系统有没有解。 @@ -81,7 +81,7 @@ int main() { } ``` -### 例题[P4926\[1007\]倍杀测量者](https://www.luogu.org/problemnew/show/P4926) +### 例题 [P4926\[1007\]倍杀测量者](https://www.luogu.org/problemnew/show/P4926) 不考虑二分等其他的东西,这里只论述差分系统 $\frac{x_i}{x_j}\leq c_k$ 的求解方法。 @@ -110,10 +110,10 @@ bool Bellman_Ford() { ## 习题 -[bzoj 1715:\[Usaco2006 Dec\]Wormholes 虫洞](https://www.lydsy.com/JudgeOnline/problem.php?id=1715) + [bzoj 1715:\[Usaco2006 Dec\]Wormholes 虫洞](https://www.lydsy.com/JudgeOnline/problem.php?id=1715) -[bzoj 2330:\[SCOI2011\]糖果](https://www.lydsy.com/JudgeOnline/problem.php?id=2330) + [bzoj 2330:\[SCOI2011\]糖果](https://www.lydsy.com/JudgeOnline/problem.php?id=2330) -[POJ 1364 King](http://poj.org/problem?id=1364) + [POJ 1364 King](http://poj.org/problem?id=1364) -[POJ 2983 Is the Information Reliable?](http://poj.org/problem?id=2983) + [POJ 2983 Is the Information Reliable?](http://poj.org/problem?id=2983) diff --git a/docs/graph/dsu-on-tree.md b/docs/graph/dsu-on-tree.md index 30a42c86..90d383b5 100644 --- a/docs/graph/dsu-on-tree.md +++ b/docs/graph/dsu-on-tree.md @@ -139,7 +139,7 @@ int dfs2(int u, int fa, bool keep, bool isson) { 1. 某些出题人设置的正解是 dsu on tree 的题 -如[CF741D](http://codeforces.com/problemset/problem/741/D)。给一棵树,每个节点的权值是'a' 到'v' 的字母,每次询问要求在一个子树找一条路径,使该路径包含的字符排序后成为回文串。 +如 [CF741D](http://codeforces.com/problemset/problem/741/D) 。给一棵树,每个节点的权值是'a' 到'v' 的字母,每次询问要求在一个子树找一条路径,使该路径包含的字符排序后成为回文串。 因为是排列后成为回文串,所以一个字符出现了两次相当于没出现,也就是说,这条路径满足 **最多有一个字符出现奇数次** 。 @@ -151,14 +151,14 @@ int dfs2(int u, int fa, bool keep, bool isson) { ### 练习题 -[CF600E Lomsat gelral](http://codeforces.com/problemset/problem/600/E) + [CF600E Lomsat gelral](http://codeforces.com/problemset/problem/600/E) 题意翻译:树的节点有颜色,一种颜色占领了一个子树,当且仅当没有其他颜色在这个子树中出现得比它多。求占领每个子树的所有颜色之和。 -[UOJ284 快乐游戏鸡](http://uoj.ac/problem/284) + [UOJ284 快乐游戏鸡](http://uoj.ac/problem/284) ### 参考资料/扩展阅读 -[CF741D 作者介绍的 dsu on tree](http://codeforces.com/blog/entry/44351) + [CF741D 作者介绍的 dsu on tree](http://codeforces.com/blog/entry/44351) -[这位作者的题解](http://codeforces.com/blog/entry/48871) + [这位作者的题解](http://codeforces.com/blog/entry/48871) diff --git a/docs/graph/euler.md b/docs/graph/euler.md index 6a061a68..5c03d1da 100644 --- a/docs/graph/euler.md +++ b/docs/graph/euler.md @@ -60,6 +60,6 @@ ## 练习题 -[「洛谷 1341」无序字母对](https://www.luogu.org/problemnew/show/P1341) + [「洛谷 1341」无序字母对](https://www.luogu.org/problemnew/show/P1341) -[「洛谷 2731」骑马修栅栏](https://www.luogu.org/problemnew/show/P2731) + [「洛谷 2731」骑马修栅栏](https://www.luogu.org/problemnew/show/P2731) diff --git a/docs/graph/flow.md b/docs/graph/flow.md index a4f48524..82cfc99e 100644 --- a/docs/graph/flow.md +++ b/docs/graph/flow.md @@ -50,4 +50,4 @@ $$ ## 网络流 24 题 - + diff --git a/docs/graph/flow/max-flow.md b/docs/graph/flow/max-flow.md index 90272fa0..dee1799e 100644 --- a/docs/graph/flow/max-flow.md +++ b/docs/graph/flow/max-flow.md @@ -1,4 +1,4 @@ -网络流基本概念参见[网络流简介](https://oi-wiki.org/graph/flow/) +网络流基本概念参见 [网络流简介](https://oi-wiki.org/graph/flow/) ## 概述 diff --git a/docs/graph/flow/min-cost.md b/docs/graph/flow/min-cost.md index 92c53251..d2c6645d 100644 --- a/docs/graph/flow/min-cost.md +++ b/docs/graph/flow/min-cost.md @@ -1,4 +1,4 @@ -在看这篇文章前请先看[网络流简介](https://oi-wiki.org/graph/flow/)这篇 wiki 的定义部分 +在看这篇文章前请先看 [网络流简介](https://oi-wiki.org/graph/flow/) 这篇 wiki 的定义部分 ## 费用流 @@ -158,9 +158,9 @@ void update() { ## 习题 -- [「Luogu 3381」【模板】最小费用最大流](https://www.luogu.org/problemnew/show/P3381) -- [「Luogu 4452」航班安排](https://www.luogu.org/problemnew/show/P4452) -- [「SDOI 2009」晨跑](https://www.lydsy.com/JudgeOnline/problem.php?id=1877) -- [「SCOI 2007」修车](https://www.lydsy.com/JudgeOnline/problem.php?id=1070) -- [「HAOI 2010」订货](https://www.lydsy.com/JudgeOnline/problem.php?id=2424) -- [「NOI 2012」美食节](https://www.lydsy.com/JudgeOnline/problem.php?id=2879) +- [「Luogu 3381」【模板】最小费用最大流](https://www.luogu.org/problemnew/show/P3381) +- [「Luogu 4452」航班安排](https://www.luogu.org/problemnew/show/P4452) +- [「SDOI 2009」晨跑](https://www.lydsy.com/JudgeOnline/problem.php?id=1877) +- [「SCOI 2007」修车](https://www.lydsy.com/JudgeOnline/problem.php?id=1070) +- [「HAOI 2010」订货](https://www.lydsy.com/JudgeOnline/problem.php?id=2424) +- [「NOI 2012」美食节](https://www.lydsy.com/JudgeOnline/problem.php?id=2879) diff --git a/docs/graph/flow/min-cut.md b/docs/graph/flow/min-cut.md index 0a598997..955c83aa 100644 --- a/docs/graph/flow/min-cut.md +++ b/docs/graph/flow/min-cut.md @@ -138,9 +138,9 @@ void dfs(int u) { ## 习题 -- [「USACO 4.4」Pollutant Control](https://www.luogu.org/problemnew/show/P1344) -- [「USACO 5.4」Telecowmunication](https://www.luogu.org/problemnew/show/P1345) -- [「Luogu 1361」小 M 的作物](https://www.luogu.org/problemnew/show/P1361) -- [「SHOI 2007」善意的投票](https://www.lydsy.com/JudgeOnline/problem.php?id=1934) +- [「USACO 4.4」Pollutant Control](https://www.luogu.org/problemnew/show/P1344) +- [「USACO 5.4」Telecowmunication](https://www.luogu.org/problemnew/show/P1345) +- [「Luogu 1361」小 M 的作物](https://www.luogu.org/problemnew/show/P1361) +- [「SHOI 2007」善意的投票](https://www.lydsy.com/JudgeOnline/problem.php?id=1934) * * * diff --git a/docs/graph/flow/node.md b/docs/graph/flow/node.md index ecb5fa5a..96a1b45b 100644 --- a/docs/graph/flow/node.md +++ b/docs/graph/flow/node.md @@ -1,4 +1,4 @@ -拆点是一种 **[网络流](/graph/flow/)** 建模思想,用来处理 **点权或者点的流量限制** 的问题。这种思路同样可以用于其他的图论算法中(比较经典的有 **分层图** ) +拆点是一种 ** [网络流](/graph/flow/) ** 建模思想,用来处理 **点权或者点的流量限制** 的问题。这种思路同样可以用于其他的图论算法中(比较经典的有 **分层图** ) ## 例题 经典问题 结点有流量限制的最大流 @@ -14,7 +14,7 @@ ![](./images/node2.png) -## 例题[\[JLOI2011\]飞行路线](https://www.lydsy.com/JudgeOnline/problem.php?id=2763) +## 例题 [\[JLOI2011\]飞行路线](https://www.lydsy.com/JudgeOnline/problem.php?id=2763) 题目大意:有 $n$ 个结点, $m$ 条边, $k$ 张旅行券,可以使用一张旅行券使得经过该边的边权除以二向下取整,求从结点 $s$ 到 $t$ 的最短路的长度。 diff --git a/docs/graph/hld.md b/docs/graph/hld.md index 6c2eb169..46859feb 100644 --- a/docs/graph/hld.md +++ b/docs/graph/hld.md @@ -156,7 +156,7 @@ TREE - PATH - SUM(u, v) while u, 不断向上跳链,当跳到同一条链上时,返回深度较小的结点即为 LCA。 -## 例题:[「ZJOI2008」树的统计](https://www.lydsy.com/JudgeOnline/problem.php?id=1036) +## 例题: [「ZJOI2008」树的统计](https://www.lydsy.com/JudgeOnline/problem.php?id=1036) ### 题目大意 @@ -360,16 +360,16 @@ int querymax(int x, int y) { ## 练习 -[「luogu P3379」【模板】最近公共祖先(LCA)](https://www.luogu.org/problemnew/show/P3379)(树剖求 $lca$ 无需数据结构,可以用作练习) + [「luogu P3379」【模板】最近公共祖先(LCA)](https://www.luogu.org/problemnew/show/P3379) (树剖求 $lca$ 无需数据结构,可以用作练习) -[「JLOI2014」松鼠的新家](https://www.lydsy.com/JudgeOnline/problem.php?id=3631)(当然也可以用树上差分) + [「JLOI2014」松鼠的新家](https://www.lydsy.com/JudgeOnline/problem.php?id=3631) (当然也可以用树上差分) -[「HAOI2015」树上操作](https://www.lydsy.com/JudgeOnline/problem.php?id=4034) + [「HAOI2015」树上操作](https://www.lydsy.com/JudgeOnline/problem.php?id=4034) -[「luogu P3384」【模板】树链剖分](https://www.luogu.org/problemnew/show/P3384) + [「luogu P3384」【模板】树链剖分](https://www.luogu.org/problemnew/show/P3384) -[「NOI2015」软件包管理器](https://www.lydsy.com/JudgeOnline/problem.php?id=4196) + [「NOI2015」软件包管理器](https://www.lydsy.com/JudgeOnline/problem.php?id=4196) -[「SDOI2011」染色](https://www.lydsy.com/JudgeOnline/problem.php?id=2243) + [「SDOI2011」染色](https://www.lydsy.com/JudgeOnline/problem.php?id=2243) -[「SDOI2014」旅行](https://www.lydsy.com/JudgeOnline/problem.php?id=3531) + [「SDOI2014」旅行](https://www.lydsy.com/JudgeOnline/problem.php?id=3531) diff --git a/docs/graph/index.md b/docs/graph/index.md index 341c9e4f..2f9cc562 100644 --- a/docs/graph/index.md +++ b/docs/graph/index.md @@ -76,7 +76,7 @@ ## 特殊的图 -树:边数比结点数少一的连通图。更多内容,详见[树相关基础](/graph/tree-basic/)。 +树:边数比结点数少一的连通图。更多内容,详见 [树相关基础](/graph/tree-basic/) 。 森林:由 $m​$ 棵( $m\ge 0​$ )互不相交的树组成的图。 diff --git a/docs/graph/kth-path.md b/docs/graph/kth-path.md index 51896a19..a6272ef2 100644 --- a/docs/graph/kth-path.md +++ b/docs/graph/kth-path.md @@ -145,7 +145,7 @@ int main() { ### 可持久化可并堆优化 - **在阅读本内容前,请先了解[可持久化可并堆](/ds/persistent-heap)的相关知识。** + **在阅读本内容前,请先了解 [可持久化可并堆](/ds/persistent-heap) 的相关知识。** 使用可持久化可并堆优化合并一个结点与其在 $T$ 上的祖先的信息,每次将一个结点与其在 $T$ 上的父亲合并,时间复杂度为 $O(n\log_2 m)$ ,空间复杂度为 $O((n+k)\log_2 m)$ 。这样在求出一个结点对应的堆时,无需复制结点且之后其父亲结点对应的堆仍然可以正常访问。 @@ -269,4 +269,4 @@ int main() { ## 习题 -[luogu P2483\[SDOI2010\]魔法猪学院](https://www.luogu.org/problemnew/show/P2483) + [luogu P2483\[SDOI2010\]魔法猪学院](https://www.luogu.org/problemnew/show/P2483) diff --git a/docs/graph/lca.md b/docs/graph/lca.md index d724c339..d9e8e451 100644 --- a/docs/graph/lca.md +++ b/docs/graph/lca.md @@ -5,7 +5,7 @@ ## 性质 -> 本节 **性质** 部分内容翻译自[wcipeg](http://wcipeg.com/wiki/Lowest_common_ancestor),并做过修改。 +> 本节 **性质** 部分内容翻译自 [wcipeg](http://wcipeg.com/wiki/Lowest_common_ancestor) ,并做过修改。 1. $\text{LCA}({u})=u$ ; 2. $u$ 是 $v$ 的祖先,当且仅当 $\text{LCA}(u,v)=u$ ; @@ -31,7 +31,7 @@ 在第二阶段中,我们从最大的 $i$ 开始循环尝试,一直尝试到 $0$ (包括 $0$ ),如果 `fa[u][i] != fa[v][i]` ,则令 `u = fa[u][i]; v = fa[v][i]` ,那么最后的 LCA 为 `fa[u][0]` 。 !!! 例题 - CODEVS2370[小机房的树](http://codevs.cn/problem/2370/)树上最短路查询 + CODEVS2370 [小机房的树](http://codevs.cn/problem/2370/) 树上最短路查询 可先求出 LCA,再结合性质 $7$ 进行解答。也可以直接在求 LCA 时求出结果。 以下代码仅供参考。 @@ -243,9 +243,9 @@ void dfs(int x, int dep) { LCA 为两个游标跳转到同一条重链上时深度较小的那个游标所指向的点。 -### [动态树](/ds/lct) +### [动态树](/ds/lct) -设连续两次[access](/ds/lct/#access)操作的点分别为 `u` 和 `v` ,则第二次[access](/ds/lct/#access)操作返回的点即为 `u` 和 `v` 的 LCA. +设连续两次 [access](/ds/lct/#access) 操作的点分别为 `u` 和 `v` ,则第二次 [access](/ds/lct/#access) 操作返回的点即为 `u` 和 `v` 的 LCA. ### 标准 RMQ @@ -263,7 +263,7 @@ LCA 为两个游标跳转到同一条重链上时深度较小的那个游标所 每一步的复杂度都是 $O(N)$ 的,因此总复杂度依然是 $O(N)$ 。 -提供 RMQ 转标准 RMQ 的代码,为洛谷上 ST 表的例题[ **P3865** 【模板】ST 表](https://www.luogu.org/problemnew/show/P3865) +提供 RMQ 转标准 RMQ 的代码,为洛谷上 ST 表的例题 [ **P3865** 【模板】ST 表](https://www.luogu.org/problemnew/show/P3865) ```cpp // Copyright (C) 2018 Skqliao. All rights served. @@ -457,6 +457,6 @@ int main() { ## 习题 -- [严格次小生成树](https://www.luogu.org/problemnew/show/P4180) -- [货车运输](https://www.luogu.org/problemnew/show/P1967) -- [跑路](https://www.luogu.org/problemnew/show/P1613) +- [严格次小生成树](https://www.luogu.org/problemnew/show/P4180) +- [货车运输](https://www.luogu.org/problemnew/show/P1967) +- [跑路](https://www.luogu.org/problemnew/show/P1613) diff --git a/docs/graph/matrix-tree.md b/docs/graph/matrix-tree.md index d5485488..5bdaf3e7 100644 --- a/docs/graph/matrix-tree.md +++ b/docs/graph/matrix-tree.md @@ -106,13 +106,13 @@ $$ ???+ note "例题 1" -「HEOI2015」小 Z 的房间,可参考。 +「HEOI2015」小 Z 的房间,可参考 。 **解** 矩阵树定理的裸题。将每个空房间看作一个结点,根据输入的信息建图,得到 Laplace 矩阵后,任意删掉 $L$ 的第 $i$ 行第 $i$ 列,求这个子式的行列式即可。求行列式的方法就是高斯消元成上三角阵然后算对角线积。另外本题需要在模 $k$ 的整数子环 $\mathbb{Z}_k$ 上进行高斯消元,采用辗转相除法即可。 ???+ note "例题 2" -「FJOI2007」轮状病毒,可参考。 +「FJOI2007」轮状病毒,可参考 。 **解** 本题的解法很多,这里用矩阵树定理是最直接的解法。当输入为 $n$ 时,容易写出其 $n+1$ 阶的 Laplace 矩阵为: diff --git a/docs/graph/mst.md b/docs/graph/mst.md index 9daa30f6..dabe14b3 100644 --- a/docs/graph/mst.md +++ b/docs/graph/mst.md @@ -1,6 +1,6 @@ ## 定义 -(还记得这些定义吗?在阅读下列内容之前,请务必了解[图论基础](/graph/basic)与[树基础](/graph/tree-basic)部分) +(还记得这些定义吗?在阅读下列内容之前,请务必了解 [图论基础](/graph/basic) 与 [树基础](/graph/tree-basic) 部分) 生成子图 @@ -16,7 +16,7 @@ ### 前置知识 -[并查集](/ds/dsu/)、[贪心](/basic/greedy/)、[图的存储](/graph/basic/)。 + [并查集](/ds/dsu/) 、 [贪心](/basic/greedy/) 、 [图的存储](/graph/basic/) 。 ### 证明 @@ -237,9 +237,9 @@ Kruskal 算法中的「集合」,能否进一步优化? ## 最小生成树题目 -[「HAOI2006」聪明的猴子](https://www.lydsy.com/JudgeOnline/problem.php?id=2429) + [「HAOI2006」聪明的猴子](https://www.lydsy.com/JudgeOnline/problem.php?id=2429) -[「SCOI2005」繁忙的都市](https://www.lydsy.com/JudgeOnline/problem.php?id=1083) + [「SCOI2005」繁忙的都市](https://www.lydsy.com/JudgeOnline/problem.php?id=1083) ## 最小生成树的唯一性 diff --git a/docs/graph/prufer.md b/docs/graph/prufer.md index 8aa1e829..c388cfa1 100644 --- a/docs/graph/prufer.md +++ b/docs/graph/prufer.md @@ -1,4 +1,4 @@ -本文翻译自[e-maxx Prufer Code](https://github.com/e-maxx-eng/e-maxx-eng/blob/master/src/graph/pruefer_code.md)。另外解释一下,原文的结点是从 $0$ 开始标号的,本文我按照大多数人的习惯改成了从 $1$ 标号。 +本文翻译自 [e-maxx Prufer Code](https://github.com/e-maxx-eng/e-maxx-eng/blob/master/src/graph/pruefer_code.md) 。另外解释一下,原文的结点是从 $0$ 开始标号的,本文我按照大多数人的习惯改成了从 $1$ 标号。 这篇文章介绍 Prufer 序列 (Prufer code),这是一种将带标号的树用一个唯一的整数序列表示的方法。 @@ -246,7 +246,7 @@ $$ ## 习题 -- [UVA #10843 - Anne's game](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1784) -- [Timus #1069 - Prufer Code](http://acm.timus.ru/problem.aspx?space=1&num=1069) -- [Codeforces - Clues](http://codeforces.com/contest/156/problem/D) -- [Topcoder - TheCitiesAndRoadsDivTwo](https://community.topcoder.com/stat?c=problem_statement&pm=10774&rd=14146) +- [UVA #10843 - Anne's game](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1784) +- [Timus #1069 - Prufer Code](http://acm.timus.ru/problem.aspx?space=1&num=1069) +- [Codeforces - Clues](http://codeforces.com/contest/156/problem/D) +- [Topcoder - TheCitiesAndRoadsDivTwo](https://community.topcoder.com/stat?c=problem_statement&pm=10774&rd=14146) diff --git a/docs/graph/scc.md b/docs/graph/scc.md index 9a27dcb2..63455eef 100644 --- a/docs/graph/scc.md +++ b/docs/graph/scc.md @@ -1,6 +1,6 @@ ## 简介 -在阅读下列内容之前,请务必了解[图论基础](/graph/basic)部分。 +在阅读下列内容之前,请务必了解 [图论基础](/graph/basic) 部分。 强连通的定义是:有向图 G 强连通是指,G 中任意两个结点连通。 @@ -150,6 +150,6 @@ DAG 好啊,能拓扑排序了就能做很多事情了。 ## 推荐题目 -[USACO Fall/HAOI 2006 受欢迎的牛](https://www.lydsy.com/JudgeOnline/problem.php?id=1051) + [USACO Fall/HAOI 2006 受欢迎的牛](https://www.lydsy.com/JudgeOnline/problem.php?id=1051) -[POJ1236 Network of Schools](http://poj.org/problem?id=1236) + [POJ1236 Network of Schools](http://poj.org/problem?id=1236) diff --git a/docs/graph/shortest-path.md b/docs/graph/shortest-path.md index 5b9ebd01..38910534 100644 --- a/docs/graph/shortest-path.md +++ b/docs/graph/shortest-path.md @@ -1,6 +1,6 @@ ## 定义 -(还记得这些定义吗?在阅读下列内容之前,请务必了解[图论基础](/graph/basic)部分。) +(还记得这些定义吗?在阅读下列内容之前,请务必了解 [图论基础](/graph/basic) 部分。) - 路径 - 最短路 @@ -282,7 +282,7 @@ for (i = 1; i <= n; i++) { 事实上,这个 DP 就相当于把每个结点拆分成了 $k+1$ 个结点,每个新结点代表使用不同多次免费通行后到达的原图结点。换句话说,就是每个结点 $u_i$ 表示使用 $i$ 次免费通行权限后到达 $u$ 结点。 -### 模板题:[\[JLOI2011\]飞行路线](https://www.lydsy.com/JudgeOnline/problem.php?id=2763) +### 模板题: [\[JLOI2011\]飞行路线](https://www.lydsy.com/JudgeOnline/problem.php?id=2763) 题意:有一个 $n$ 个点 $m$ 条边的无向图,你可以选择 $k$ 条道路以零代价通行,求 $s$ 到 $t$ 的最小花费。 diff --git a/docs/graph/topo.md b/docs/graph/topo.md index c760961c..8e1e960f 100644 --- a/docs/graph/topo.md +++ b/docs/graph/topo.md @@ -8,7 +8,7 @@ 但是如果某一天排课的老师打瞌睡了,说想要学习 算法导论,还得先学 机器学习,而 机器学习 的前置课程又是 算法导论,然后你就一万脸懵逼了,我到底应该先学哪一个?当然我们在这里不考虑什么同时学几个课程的情况。在这里,算法导论 和 机器学习 间就出现了一个环,显然你现在没办法弄清楚你需要学什么了,于是你也没办法进行拓扑排序了。因而如果有向图中存在环路,那么我们就没办法进行 拓扑排序 了。 -因此我们可以说 在一个[DAG(有向无环图)](/graph/dag)中,我们将图中的顶点以线性方式进行排序,使得对于任何的顶点 $u$ 到 $v$ 的有向边 $(u,v)$ , 都可以有 $u$ 在 $v$ 的前面。 +因此我们可以说 在一个 [DAG(有向无环图)](/graph/dag) 中,我们将图中的顶点以线性方式进行排序,使得对于任何的顶点 $u$ 到 $v$ 的有向边 $(u,v)$ , 都可以有 $u$ 在 $v$ 的前面。 还有给定一个 DAG,如果从 $i$ 到 $j$ 有边,则认为 $j$ 依赖于 $i$ 。如果 $i$ 到 $j$ 有路径( $i$ 可达 $j$ ),则称 $j$ 间接依赖于 $i$ 。 @@ -22,7 +22,7 @@ 最后当集合为空后,就检查图中是否存在任何边。如果有,那么这个图一定有环路,否者返回 $L$ , $L$ 中顺序就是拓扑排序的结果 -首先看来自[Wikipedia](https://en.wikipedia.org/wiki/Topological_sorting#Kahn's_algorithm)的伪代码 +首先看来自 [Wikipedia](https://en.wikipedia.org/wiki/Topological_sorting#Kahn's_algorithm) 的伪代码 ```text L← Empty list that will contain the sorted elements @@ -124,5 +124,5 @@ bool toposort() { ## 参考 1. 离散数学及其应用。ISBN:9787111555391 -2. -3. Topological sorting, +2. +3. Topological sorting, diff --git a/docs/graph/tree-hash.md b/docs/graph/tree-hash.md index cf25cad6..9d3bdb20 100644 --- a/docs/graph/tree-hash.md +++ b/docs/graph/tree-hash.md @@ -46,7 +46,7 @@ $$ ### Problem -[Luogu P5403](https://www.luogu.org/problemnew/show/P5043) + [Luogu P5403](https://www.luogu.org/problemnew/show/P5043) ### Solution diff --git a/docs/graph/tree-misc.md b/docs/graph/tree-misc.md index bd6e5202..1f7d8390 100644 --- a/docs/graph/tree-misc.md +++ b/docs/graph/tree-misc.md @@ -60,6 +60,6 @@ struct CenterTree { ## 参考 - + - + diff --git a/docs/index.md b/docs/index.md index a6125ec4..ec9f4cf0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,9 +2,9 @@ disqus: pagetime: title: OI Wiki -# 欢迎来到 **OI Wiki** ![![GitHub watchers](https://img.shields.io/github/watchers/OI-wiki/OI-wiki.svg?style=social&label=Watch)](https://github.com/OI-wiki/OI-wiki)[![GitHub stars](https://img.shields.io/github/stars/OI-wiki/OI-wiki.svg?style=social&label=Stars)](https://github.com/OI-wiki/OI-wiki) +# 欢迎来到 **OI Wiki** ! [![GitHub watchers](https://img.shields.io/github/watchers/OI-wiki/OI-wiki.svg?style=social&label=Watch)](https://github.com/OI-wiki/OI-wiki) [![GitHub stars](https://img.shields.io/github/stars/OI-wiki/OI-wiki.svg?style=social&label=Stars)](https://github.com/OI-wiki/OI-wiki) -[![Word Art](./images/wordArt.png)](https://github.com/OI-wiki/OI-wiki) + [![Word Art](./images/wordArt.png)](https://github.com/OI-wiki/OI-wiki) **OI** (Olympiad in Informatics,信息学奥林匹克竞赛)在中国起源于 1984 年,是五大高中学科竞赛之一。自 1989 年起,每年还会选拔出国家集训队选手准备 IOI (International Olympiad in Informatics,国际信息学奥林匹克竞赛)。 @@ -12,11 +12,11 @@ title: OI Wiki **OI Wiki** 致力于成为一个免费开放且持续更新的知识整合站点,大家可以在这里获取关于 **编程竞赛 (competitive programming)** 有趣又实用的知识,我们为大家准备了竞赛中的基础知识、常见题型、解题思路以及常用工具等内容,帮助大家更快速深入地学习编程竞赛。 -本项目受[CTF Wiki](https://ctf-wiki.github.io/ctf-wiki/)的启发,在编写过程中参考了诸多资料,在此一并致谢。 +本项目受 [CTF Wiki](https://ctf-wiki.github.io/ctf-wiki/) 的启发,在编写过程中参考了诸多资料,在此一并致谢。 -本项目文档内容托管于[GitHub](https://github.com/OI-wiki/OI-wiki),主要使用[Issues](https://github.com/OI-wiki/OI-wiki/issues)/[QQ](https://jq.qq.com/?_wv=1027&k=5EfkM6K)/[Telegram](https://t.me/OIwiki)进行交流沟通,期待你的加入。 +本项目文档内容托管于 [GitHub](https://github.com/OI-wiki/OI-wiki) ,主要使用 [Issues](https://github.com/OI-wiki/OI-wiki/issues) / [QQ](https://jq.qq.com/?_wv=1027&k=5EfkM6K) / [Telegram](https://t.me/OIwiki) 进行交流沟通,期待你的加入。 -Telegram 群组链接为[@OIwiki](https://t.me/OIwiki),QQ 群号码为[ `588793226` ](https://jq.qq.com/?_wv=1027&k=5EfkM6K),欢迎加入。 +Telegram 群组链接为 [@OIwiki](https://t.me/OIwiki) ,QQ 群号码为 [ `588793226` ](https://jq.qq.com/?_wv=1027&k=5EfkM6K) ,欢迎加入。 ## Material color palette 颜色主题 diff --git a/docs/intro/about.md b/docs/intro/about.md index c49066b2..9dbd6625 100644 --- a/docs/intro/about.md +++ b/docs/intro/about.md @@ -6,7 +6,7 @@ A:不知道你在学 **OI** 的时候,面对庞大的知识体系,有没 Q:我很感兴趣,怎么参与呢? -A: **OI Wiki** 现在托管在[GitHub](https://github.com/24OI/OI-wiki)上,你可以直接访问这个[repo](https://github.com/24OI/OI-wiki)来查看最新进展。参与的途径包括在[GitHub](https://github.com/24OI/OI-wiki)上面开 Issue、Pull Request,或者在交流群中分享你的想法、直接向管理员投稿。目前,我们使用的框架是用 Python 开发的[mkdocs](https://mkdocs.readthedocs.io),支持 Markdown 格式(也支持插入数学公式)。 +A: **OI Wiki** 现在托管在 [GitHub](https://github.com/24OI/OI-wiki) 上,你可以直接访问这个 [repo](https://github.com/24OI/OI-wiki) 来查看最新进展。参与的途径包括在 [GitHub](https://github.com/24OI/OI-wiki) 上面开 Issue、Pull Request,或者在交流群中分享你的想法、直接向管理员投稿。目前,我们使用的框架是用 Python 开发的 [mkdocs](https://mkdocs.readthedocs.io) ,支持 Markdown 格式(也支持插入数学公式)。 Q:可是我比较弱……不知道我能做点什么? @@ -22,13 +22,13 @@ A:最开始主要是一些退役老年选手在做这件事,后来遇到了 Q:听说过 nocow 吧, **OI Wiki** 怎么保证我们添加的内容不会像 nocow 那样突然间就不见了呢? -A:我们把内容托管在[GitHub](https://github.com/24OI/OI-wiki)上面,即使我们的服务器翻车了,内容也不会丢失。另外,我们也会定期备份大家的心血,即使有一天[GitHub](https://github.com/24OI/OI-wiki)倒闭了(?),我们的内容也不会丢失。 +A:我们把内容托管在 [GitHub](https://github.com/24OI/OI-wiki) 上面,即使我们的服务器翻车了,内容也不会丢失。另外,我们也会定期备份大家的心血,即使有一天 [GitHub](https://github.com/24OI/OI-wiki) 倒闭了(?),我们的内容也不会丢失。 Q: **OI Wiki** 好像现在大部分内容都是空的啊? A:是的,目前进度只完成了 84%(重新统计于 2019.03),还远远称不上是一个合格的 Wiki。在过去的几个月里,主要添加的内容也比较基础。所以在这里进行征稿和招募,希望可以遇到有同样想法的朋友,我们一起把 **OI Wiki** 完善起来。 -Q:为什么不直接去写[中文维基](https://zh.wikipedia.org/)呢? +Q:为什么不直接去写 [中文维基](https://zh.wikipedia.org/) 呢? A:因为我们希望可以真正帮到更多的选手或者对这些内容感兴趣的人,由于众所周知的原因,中文维基上的内容并不是无门槛就可以获取到的。 diff --git a/docs/intro/common-tricks.md b/docs/intro/common-tricks.md index b2e7da79..0c64264c 100644 --- a/docs/intro/common-tricks.md +++ b/docs/intro/common-tricks.md @@ -188,4 +188,4 @@ inline Node* newnode() { } ``` -注:本页面[部分内容](https://github.com/24OI/OI-wiki/commit/e9fa69af9d7f1583cb5ddad837c04bb1b03d7939)最初发表于[洛谷日报 #86](https://studyingfather.blog.luogu.org/some-coding-tips-for-oiers),由原作者整理并搬运至此,略有删改。 +注:本页面 [部分内容](https://github.com/24OI/OI-wiki/commit/e9fa69af9d7f1583cb5ddad837c04bb1b03d7939) 最初发表于 [洛谷日报 #86](https://studyingfather.blog.luogu.org/some-coding-tips-for-oiers) ,由原作者整理并搬运至此,略有删改。 diff --git a/docs/intro/editor/atom.md b/docs/intro/editor/atom.md index ec400ac9..7d2b3a46 100644 --- a/docs/intro/editor/atom.md +++ b/docs/intro/editor/atom.md @@ -4,4 +4,4 @@ author: ChungZH, partychicken ### 简介 -Atom 是一个免费、开源、跨平台的由 GitHub 开发的程序编辑器。它是用 JavaScript 编写的,并且采用 Electron 架构。官网是。它的一个较大缺点就是性能差。 +Atom 是一个免费、开源、跨平台的由 GitHub 开发的程序编辑器。它是用 JavaScript 编写的,并且采用 Electron 架构。官网是 。它的一个较大缺点就是性能差。 diff --git a/docs/intro/editor/emacs.md b/docs/intro/editor/emacs.md index 6420787b..7f6c2026 100644 --- a/docs/intro/editor/emacs.md +++ b/docs/intro/editor/emacs.md @@ -58,7 +58,7 @@ Emacs 是一款非常容易上手的编辑器,重要的快捷键不多,随 #### 配置 -[获取上文图片中的配置](https://www.cnblogs.com/akakw1/p/10088191.html) + [获取上文图片中的配置](https://www.cnblogs.com/akakw1/p/10088191.html) 再 home 目录下显示隐藏文件,".emacs" 就是配置文件(如果没有说明之前没保存) diff --git a/docs/intro/editor/vim.md b/docs/intro/editor/vim.md index 902fa121..f68559e3 100644 --- a/docs/intro/editor/vim.md +++ b/docs/intro/editor/vim.md @@ -48,7 +48,7 @@ sudo apt-get install vim 静待安装完成即可 -做法二,先到[Releases - vim/vim](https://github.com/vim/vim/releases)下载源码包,然后解压,并进入解压后的文件夹,并打开终端,cd 至文件夹路径,并依次输入如下命令: +做法二,先到 [Releases - vim/vim](https://github.com/vim/vim/releases) 下载源码包,然后解压,并进入解压后的文件夹,并打开终端,cd 至文件夹路径,并依次输入如下命令: ```bash sudo apt-get install python-dev @@ -345,7 +345,7 @@ vim filename 打开文件还是在 Vim 内使用 `:e filename` 来打开文件显然都过于麻烦。那么有没有什么更好的法子? -答案是显然的,Vim 的用户们开发了 nerdtree 这一插件。这个插件达到了一种类似于 VS Code 中的效果——工程目录树,之需在左侧目录栏选中相应文件即可打开相应文件。这在配置篇中将会有介绍。nerdtree 的开启方式是在 Vim 中输入 `:NERDTreeToggle` ,它会在左侧打开一个侧边栏窗口。我知道这显然太过麻烦,所以在配置中我给它赋予了F10这个快捷键。至于具体还有什么快捷键,详请参照[此文章]([http://yang3wei.github.io/blog/2013/01/29/nerdtree-kuai-jie-jian-ji-lu/)。 +答案是显然的,Vim 的用户们开发了 nerdtree 这一插件。这个插件达到了一种类似于 VS Code 中的效果——工程目录树,之需在左侧目录栏选中相应文件即可打开相应文件。这在配置篇中将会有介绍。nerdtree 的开启方式是在 Vim 中输入 `:NERDTreeToggle` ,它会在左侧打开一个侧边栏窗口。我知道这显然太过麻烦,所以在配置中我给它赋予了F10这个快捷键。至于具体还有什么快捷键,详请参照 [此文章]([http://yang3wei.github.io/blog/2013/01/29/nerdtree-kuai-jie-jian-ji-lu/) 。 也许有人要说考场上该如何呢?没关系,Vim 自带了一个稍逊一筹的文件管理器 netrw。如果你的命令是这样的 @@ -403,7 +403,7 @@ vimcdoc:汉化 Vim 在线文档。 gundo:这个插件将能够显示你的文件修改树,就像 github 上一般能够回到历史版本,时光机啊。Vim 中 `:GundoToggle` 即可在左侧打开时光机。但是需要 Vim 开启 python 支持,请自行百度。 -vimim:这个的安装不在配置中 ( `* 那是之前 emm,现在 kuai 到了我自己的 github 上,可以直接拉了 *` ),相当于 Vim 自带中文输入法,需在 `.vim` 中创建文件夹 plugin 并把[从这里](https://www.vim.org/scripts/download_script.php?src_id=23122)下得的文件扔入此文件夹中即可。打开 Vim 并进入插入模式,按下Ctrl+/即可启用。但是使用的是云词库,若没网就会卡死。所以建议下载[本地超大词库](https://github.com/vimim/vimim/raw/master/plugin/vimim.gbk.bsddb),也放入 plugin 文件夹中,与插件脚本同目录即可启用。 +vimim:这个的安装不在配置中 ( `* 那是之前 emm,现在 kuai 到了我自己的 github 上,可以直接拉了 *` ),相当于 Vim 自带中文输入法,需在 `.vim` 中创建文件夹 plugin 并把 [从这里](https://www.vim.org/scripts/download_script.php?src_id=23122) 下得的文件扔入此文件夹中即可。打开 Vim 并进入插入模式,按下Ctrl+/即可启用。但是使用的是云词库,若没网就会卡死。所以建议下载 [本地超大词库](https://github.com/vimim/vimim/raw/master/plugin/vimim.gbk.bsddb) ,也放入 plugin 文件夹中,与插件脚本同目录即可启用。 vim-instant-markdown:这个插件可就厉害了。Vim 用习惯了之后什么都想用 Vim 来做,比如想用 Vim 来写 Markdown 并实时预览怎么办?于是这个强大的插件就诞生了,当打开 Markdown 文件时会自动在浏览器中打开一个标签页,将能够实时预览你的 Vim 中的 markdown 内容。还有额外的需要,请至 github 首页了解详情。 @@ -411,7 +411,7 @@ vim-instant-markdown:这个插件可就厉害了。Vim 用习惯了之后什 ### 配置篇 -[我的配置](https://github.com/LuoshuiTianyi/Vim-for-OIWiki)Ps: 我的 .vimrc 时刻在改,所以这只是个副本…… + [我的配置](https://github.com/LuoshuiTianyi/Vim-for-OIWiki) Ps: 我的 .vimrc 时刻在改,所以这只是个副本…… 结合我的配置讲一讲一些 Vim 中的小细节和快捷键以及一些……七里八里的东西? @@ -590,7 +590,7 @@ func! Term() 按F8就能在上面分出一个窗口打开终端了。 -介于更各种 Vim 版本的压迫,Vim 作者也是奋发图强,Vim 8.1 又更新了调试程序,先用 `packadd termdebug` 开启此设置,然后在 Vim 中输入 `:Termdebug + 编译出的程序名称` 即可开始 GDB 的过程,具体详细操作可以参考[这篇文章](https://fzheng.me/2018/05/28/termdebug/)。这个自然也被我封装函数了 >\_<。 +介于更各种 Vim 版本的压迫,Vim 作者也是奋发图强,Vim 8.1 又更新了调试程序,先用 `packadd termdebug` 开启此设置,然后在 Vim 中输入 `:Termdebug + 编译出的程序名称` 即可开始 GDB 的过程,具体详细操作可以参考 [这篇文章](https://fzheng.me/2018/05/28/termdebug/) 。这个自然也被我封装函数了 >\_<。 ```vim packadd termdebug diff --git a/docs/intro/editor/vscode.md b/docs/intro/editor/vscode.md index 3f7c652d..b41f9f5f 100644 --- a/docs/intro/editor/vscode.md +++ b/docs/intro/editor/vscode.md @@ -2,7 +2,7 @@ author: ChungZH, keepthethink, abc1763613206, partychicken, Xeonacid ## 简介 -Visual Studio Code(以下简称 VS Code) 是一个免费、开源、跨平台的由微软开发的程序编辑器。它是用 TypeScript 编写的,并且采用 Electron 架构。官网是。它带有对 JavaScript、TypeScript 和 Node.js 的内置支持,并为其他语言(如 C++、Cype、Java、Python、PHP、GO)提供了丰富的扩展生态系统。 +Visual Studio Code(以下简称 VS Code) 是一个免费、开源、跨平台的由微软开发的程序编辑器。它是用 TypeScript 编写的,并且采用 Electron 架构。官网是 。它带有对 JavaScript、TypeScript 和 Node.js 的内置支持,并为其他语言(如 C++、Cype、Java、Python、PHP、GO)提供了丰富的扩展生态系统。 ## 配置 @@ -16,7 +16,7 @@ VS Code 自身带有非常强大的 C/C++ 功能,但配置过程比较复杂 Code Runner 是一个可以一键运行代码的插件,在工程上一般用来验证代码片段,支持 Node.js, Python, C, C++, Java, PHP, Perl, Ruby, Go 等超过 40 种语言。 -打开插件商店,搜索 `Code Runner` 并安装。或者去[Marketplace](https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner) +打开插件商店,搜索 `Code Runner` 并安装。或者去 [Marketplace](https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner) ![](./images/vscode-1.jpg) @@ -30,7 +30,7 @@ Code Runner 是一个可以一键运行代码的插件,在工程上一般用 ### 使用 C/C++ 插件编译并调试 ???+ warning - 在配置前,请确保你已经安装了[MinGW-w64](https://mingw-w64.org/doku.php/download)或[Clang](https://releases.llvm.org/download.html),并已经将它们添加到了 `path` 中。 + 在配置前,请确保你已经安装了 [MinGW-w64](https://mingw-w64.org/doku.php/download) 或 [Clang](https://releases.llvm.org/download.html) ,并已经将它们添加到了 `path` 中。 #### 配置编译与调试 diff --git a/docs/intro/faq.md b/docs/intro/faq.md index 67e9a060..ee7218e4 100644 --- a/docs/intro/faq.md +++ b/docs/intro/faq.md @@ -1,16 +1,16 @@ ## 交流方式 -本项目主要使用[Issues](https://github.com/24OI/OI-wiki/issues)/[QQ](https://jq.qq.com/?_wv=1027&k=5EfkM6K)/[Telegram](https://t.me/OIwiki)进行交流沟通。 +本项目主要使用 [Issues](https://github.com/24OI/OI-wiki/issues) / [QQ](https://jq.qq.com/?_wv=1027&k=5EfkM6K) / [Telegram](https://t.me/OIwiki) 进行交流沟通。 -Telegram 群组链接为[@OIwiki](https://t.me/OIwiki),QQ 群号码为[ `588793226` ](https://jq.qq.com/?_wv=1027&k=5EfkM6K),欢迎加入。 +Telegram 群组链接为 [@OIwiki](https://t.me/OIwiki) ,QQ 群号码为 [ `588793226` ](https://jq.qq.com/?_wv=1027&k=5EfkM6K) ,欢迎加入。 ## 贡献方式 - **我们现在在使用[Projects](https://github.com/24OI/OI-wiki/projects),这里详细列举了正在做的事情以及待做事项。** + **我们现在在使用 [Projects](https://github.com/24OI/OI-wiki/projects) ,这里详细列举了正在做的事情以及待做事项。** - **在开始编写一段内容之前,请查阅[Issues](https://github.com/24OI/OI-wiki/issues),确认没有别人在做相同的工作之后,** + **在开始编写一段内容之前,请查阅 [Issues](https://github.com/24OI/OI-wiki/issues) ,确认没有别人在做相同的工作之后,** - **开个[新 issue](https://github.com/24OI/OI-wiki/issues/new)记录你要编写的内容。** + **开个 [新 issue](https://github.com/24OI/OI-wiki/issues/new) 记录你要编写的内容。** ### 我之前没怎么用过 GitHub @@ -27,7 +27,7 @@ Telegram 群组链接为[@OIwiki](https://t.me/OIwiki),QQ 群号码为[ `58879 (有木有很简单?) -如果还是不放心,可以参考[这篇文章](https://juejin.im/entry/56e638591ea49300550885cc),或者试试[Github 的官方教程](https://lab.github.com/)。 +如果还是不放心,可以参考 [这篇文章](https://juejin.im/entry/56e638591ea49300550885cc) ,或者试试 [Github 的官方教程](https://lab.github.com/) 。 ### 我之前用过 GitHub @@ -42,7 +42,7 @@ Telegram 群组链接为[@OIwiki](https://t.me/OIwiki),QQ 群号码为[ `58879 ### 协作流程 1. 在收到一个新的 Pull Request 之后,GitHub 会给 reviewer 发送邮件 -2. 与此同时,在[Travis CI](https://travis-ci.org/OI-wiki/OI-wiki)和[Netlify](https://app.netlify.com/sites/oi-wiki)上会运行两组测试,他们会把进度同步在 PR 页面的下方。Travis CI 主要是用来确认 PR 中内容的修改不会影响到网站构建的进程;Netlify 是用来把 PR 中的更新构建出来,方便 reviewer 审核(在测试完成后点击 Details 可以了解更多) +2. 与此同时,在 [Travis CI](https://travis-ci.org/OI-wiki/OI-wiki) 和 [Netlify](https://app.netlify.com/sites/oi-wiki) 上会运行两组测试,他们会把进度同步在 PR 页面的下方。Travis CI 主要是用来确认 PR 中内容的修改不会影响到网站构建的进程;Netlify 是用来把 PR 中的更新构建出来,方便 reviewer 审核(在测试完成后点击 Details 可以了解更多) 3. 在足够多 reviewer 投票通过一个 PR 之后,这个 PR 才可以合并到 master 分支中 4. 在合并到 master 分支之后,会在 Travis CI 上重新构建一遍网站内容,并更新到 gh-pages 分支 5. 这时服务器才会拉取 gh-pages 分支的更新,并重新部署最新版本的内容 @@ -57,13 +57,13 @@ Telegram 群组链接为[@OIwiki](https://t.me/OIwiki),QQ 群号码为[ `58879 ### 文档内容的基本格式 -在提交 PR 前,请先确保文档内容符合下文中的格式要求(如有疑问可以在[How To Contribute](https://github.com/OI-wiki/OI-wiki/wiki/How-to-contribute)页面中查阅相关例子)。格式缺乏基本的规范性、严谨性可能会使你的贡献不能及时通过审核。 +在提交 PR 前,请先确保文档内容符合下文中的格式要求(如有疑问可以在 [How To Contribute](https://github.com/OI-wiki/OI-wiki/wiki/How-to-contribute) 页面中查阅相关例子)。格式缺乏基本的规范性、严谨性可能会使你的贡献不能及时通过审核。 -如果对 mkdocs-material(我们使用的这个主题)还有什么问题,还可以查阅[MkDocs 使用说明](https://github.com/ctf-wiki/ctf-wiki/wiki/Mkdocs-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E)和[cyent 的笔记](https://cyent.github.io/markdown-with-mkdocs-material/),前者介绍了 mkdocs-material 主题的插件使用方式,而后者介绍了 markdown 传统语法和 mkdocs-material 支持的扩展语法。 +如果对 mkdocs-material(我们使用的这个主题)还有什么问题,还可以查阅 [MkDocs 使用说明](https://github.com/ctf-wiki/ctf-wiki/wiki/Mkdocs-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E) 和 [cyent 的笔记](https://cyent.github.io/markdown-with-mkdocs-material/) ,前者介绍了 mkdocs-material 主题的插件使用方式,而后者介绍了 markdown 传统语法和 mkdocs-material 支持的扩展语法。 #### remark-lint 要求怎样的格式 -我们现在启用的配置文件在[.remarkrc](https://github.com/24OI/OI-wiki/blob/master/.remarkrc),它可以自动给项目内文件统一风格。 +我们现在启用的配置文件在 [.remarkrc](https://github.com/24OI/OI-wiki/blob/master/.remarkrc) ,它可以自动给项目内文件统一风格。 在配置过程中我们也遇到了一些 remark-lint 不能很好处理的问题: @@ -74,7 +74,7 @@ Telegram 群组链接为[@OIwiki](https://t.me/OIwiki),QQ 群号码为[ `58879 2. `1. 例子` 点号后要有空格。 4. 行间公式前后各要有一行空行,否则会被当做是行内公式。 5. 伪代码请使用 ```` ```text```` ,直接使用 ```` ``` ```` 可能导致内容被错误地缩进。 -6. 涉及到目录的更改,需要改动 mkdocs.yml,另外也请注意如果影响到作者信息统计,麻烦更新[author 字段](https://oi-wiki.org/intro/faq/#_15)。 +6. 涉及到目录的更改,需要改动 mkdocs.yml,另外也请注意如果影响到作者信息统计,麻烦更新 [author 字段](https://oi-wiki.org/intro/faq/#_15) 。 7. 所有比赛请使用官方正式中文/英文名称。特别注意 NOI 系列赛官方英文名称均为全大写,如 NOIP。 #### 文档中 LaTeX 公式的格式 @@ -109,29 +109,29 @@ Telegram 群组链接为[@OIwiki](https://t.me/OIwiki),QQ 群号码为[ `58879 ### 目录在哪 -目录在项目根目录下的[mkdocs.yml](https://github.com/24OI/OI-wiki/blob/master/mkdocs.yml#L17)文件中。 +目录在项目根目录下的 [mkdocs.yml](https://github.com/24OI/OI-wiki/blob/master/mkdocs.yml#L17) 文件中。 ### 如何修改一个 topic 的内容 在对应页面右上方有一个编辑按钮edit,点击之后会跳转到 GitHub 上对应文件的位置。 -或者也可以自行阅读目录[(mkdocs.yml)](https://github.com/24OI/OI-wiki/blob/master/mkdocs.yml#L17)查找文件位置。 +或者也可以自行阅读目录 [(mkdocs.yml)](https://github.com/24OI/OI-wiki/blob/master/mkdocs.yml#L17) 查找文件位置。 ### 如何添加一个 topic 1. 可以开一个 Issue,注明希望能添加的内容。 -2. 可以开一个 Pull Request,在目录[(mkdocs.yml)](https://github.com/24OI/OI-wiki/blob/master/mkdocs.yml#L17)中加上新的 topic,并在[docs](https://github.com/24OI/OI-wiki/tree/master/docs)文件夹下对应位置创建一个空的 `.md` 文件。 +2. 可以开一个 Pull Request,在目录 [(mkdocs.yml)](https://github.com/24OI/OI-wiki/blob/master/mkdocs.yml#L17) 中加上新的 topic,并在 [docs](https://github.com/24OI/OI-wiki/tree/master/docs) 文件夹下对应位置创建一个空的 `.md` 文件。 !!! warning "注意" 写 .md 文件时,请勿在开头写上标题。 ### commit message 怎么写 -我们推荐使用[commitizen/cz-cli](https://github.com/commitizen/cz-cli)来规范 commit message(并非强求)。 +我们推荐使用 [commitizen/cz-cli](https://github.com/commitizen/cz-cli) 来规范 commit message(并非强求)。 ### 我尝试访问 GitHub 的时候遇到了困难 -推荐在 hosts 文件中加入如下几行:(来源:[@GoogleHosts](https://github.com/googlehosts/hosts/blob/master/hosts-files/hosts#L1380-L1384)) +推荐在 hosts 文件中加入如下几行:(来源: [@GoogleHosts](https://github.com/googlehosts/hosts/blob/master/hosts-files/hosts#L1380-L1384) ) ```text # Github Start @@ -141,11 +141,11 @@ Telegram 群组链接为[@OIwiki](https://t.me/OIwiki),QQ 群号码为[ `58879 # Github End ``` -可以在[@GoogleHosts 主页](https://github.com/googlehosts/hosts)上了解到更多信息。 +可以在 [@GoogleHosts 主页](https://github.com/googlehosts/hosts) 上了解到更多信息。 ### 我这里 pip 也太慢了 -可以选择更换国内源,参考:[更改 pip 源至国内镜像 - L 瑜 - CSDN 博客](https://blog.csdn.net/lambert310/article/details/52412059),或者: +可以选择更换国内源,参考: [更改 pip 源至国内镜像 - L 瑜 - CSDN 博客](https://blog.csdn.net/lambert310/article/details/52412059) ,或者: ```bash pip install -U -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ @@ -159,11 +159,11 @@ pip install -U -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ git clone https://github.com/24OI/OI-wiki.git --depth=1 -b master ``` -参考: +参考: ### 我没装过 Python 3 -可以访问[Python 官网](https://www.python.org/downloads/)了解更多信息。 +可以访问 [Python 官网](https://www.python.org/downloads/) 了解更多信息。 ### 好像提示我 pip 版本过低 @@ -183,7 +183,7 @@ python -m pip install --upgrade pip ### 我 clone 了很久之前的 repo,怎么更新到新版本呢 -参考:。 +参考: 。 ### 如果是装了之前的依赖怎么更新 @@ -193,9 +193,9 @@ pip install -U -r requirements.txt ### 为什么我的 markdown 格式乱了 -可以查阅[cyent 的笔记](https://cyent.github.io/markdown-with-mkdocs-material/),或者[MkDocs 使用说明](https://github.com/ctf-wiki/ctf-wiki/wiki/Mkdocs-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E)。 +可以查阅 [cyent 的笔记](https://cyent.github.io/markdown-with-mkdocs-material/) ,或者 [MkDocs 使用说明](https://github.com/ctf-wiki/ctf-wiki/wiki/Mkdocs-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E) 。 -我们目前在使用[remark-lint](https://github.com/remarkjs/remark-lint)来自动化修正格式,可能还有一些[配置](https://github.com/24OI/OI-wiki/blob/master/.remarkrc)不够好的地方,欢迎指出。 +我们目前在使用 [remark-lint](https://github.com/remarkjs/remark-lint) 来自动化修正格式,可能还有一些 [配置](https://github.com/24OI/OI-wiki/blob/master/.remarkrc) 不够好的地方,欢迎指出。 #### GitHub 是不是不显示我的数学公式? @@ -217,7 +217,7 @@ $$ 是的,这个是 python-markdown 的一个 bug,可能近期会修复。 -如果现在想要避免目录中出现双倍公式,可以参考 +如果现在想要避免目录中出现双倍公式,可以参考 ```text ### 结束位置 @@ -233,7 +233,7 @@ $$ ### 如何给一个页面单独声明版权信息 -参考[Metadata](https://squidfunk.github.io/mkdocs-material/extensions/metadata/#usage)的使用,在页面开头加一行即可。 +参考 [Metadata](https://squidfunk.github.io/mkdocs-material/extensions/metadata/#usage) 的使用,在页面开头加一行即可。 比如: @@ -245,7 +245,7 @@ copyright: SATA ### 如何给一个页面关闭字数统计(现已默认关闭) -参考[Metadata](https://squidfunk.github.io/mkdocs-material/extensions/metadata/#usage)的使用,在页面开头加一行即可。 +参考 [Metadata](https://squidfunk.github.io/mkdocs-material/extensions/metadata/#usage) 的使用,在页面开头加一行即可。 比如: diff --git a/docs/intro/icpc.md b/docs/intro/icpc.md index 13d0354d..eee6da6f 100644 --- a/docs/intro/icpc.md +++ b/docs/intro/icpc.md @@ -4,13 +4,13 @@ **ICPC** (International Collegiate Programming Contest, 国际大学生程序设计竞赛)由 ICPC 基金会(ICPC Foundation)举办,是最具影响力的大学生计算机竞赛。ICPC 主要分为区域赛(Regionals)和总决赛(World Finals)两部分。由于以前 ACM 赞助这个竞赛,也有很多人习惯叫它 ACM 竞赛。 - + ### CCPC 中国大学生程序设计竞赛,和 ICPC 显著的区别是很多学校是不报销的。 - + ## 赛季赛程 @@ -23,13 +23,13 @@ ### 多校联合训练 -暑期在[HDU OJ](http://acm.hdu.edu.cn)举行的训练赛,有奖金,题目质量高,历经多年积累已有丰富资源。 +暑期在 [HDU OJ](http://acm.hdu.edu.cn) 举行的训练赛,有奖金,题目质量高,历经多年积累已有丰富资源。 OJ 里查询用的关键词: `Multi-University Training Contest` ### 国内区域赛 - + 善用搜索,可以找到前辈精选的题集 @@ -41,11 +41,11 @@ WannaFly Camp ### 队伍维基 -- 叉姐的 ICPCCamp Wiki +- 叉姐的 ICPCCamp Wiki > OI Wiki 这边也在筹备类似的功能,有需求的队伍可以来联系 ## 训练资源 -- **OI Wiki** -- Codeforces Gym +- **OI Wiki ** +- Codeforces Gym diff --git a/docs/intro/judgers.md b/docs/intro/judgers.md index de0c9201..8417d829 100644 --- a/docs/intro/judgers.md +++ b/docs/intro/judgers.md @@ -4,21 +4,21 @@ author: bear-good ## Cena -Cena 是由刘其帅和李子星使用 Pascal 语言编写的开源评测工具,是流传最广泛的本地评测工具。Cena 最初开源于 Google Code 平台,由于不明原因 Google 删除了 Cena 项目,目前可以在[Web Archive](https://web.archive.org/web/20131023112258/http://code.google.com/p/cena/)上找到 Cena 的官网。 +Cena 是由刘其帅和李子星使用 Pascal 语言编写的开源评测工具,是流传最广泛的本地评测工具。Cena 最初开源于 Google Code 平台,由于不明原因 Google 删除了 Cena 项目,目前可以在 [Web Archive](https://web.archive.org/web/20131023112258/http://code.google.com/p/cena/) 上找到 Cena 的官网。 -Cena 的源代码可以在[这里](https://github.com/billchenchina/cena)找到。 +Cena 的源代码可以在 [这里](https://github.com/billchenchina/cena) 找到。 Cena 对权限的限制不是很明确,测试的时候可以读测点 AC QAQ ## Lemon -Lemon 是 zhipeng-jia 写的开源的评测工具,仓库[zhipeng-jia/project-lemon](https://github.com/zhipeng-jia/project-lemon)。 +Lemon 是 zhipeng-jia 写的开源的评测工具,仓库 [zhipeng-jia/project-lemon](https://github.com/zhipeng-jia/project-lemon) 。 -Ir1d 提供了一份 linux 下编译好的版本在[FreestyleOJ/Project_lemon](https://github.com/FreestyleOJ/Project_lemon/tree/Built)。 +Ir1d 提供了一份 linux 下编译好的版本在 [FreestyleOJ/Project_lemon](https://github.com/FreestyleOJ/Project_lemon/tree/Built) 。 -Menci 提供了一份更新的版本在[Menci/Lemon](https://github.com/Menci/Lemon/)。 +Menci 提供了一份更新的版本在 [Menci/Lemon](https://github.com/Menci/Lemon/) 。 -Dust1404 维护了支持子文件夹和单题测试等功能的版本在[Dust1404/Project_LemonPlus](https://github.com/Dust1404/Project_LemonPlus)。 +Dust1404 维护了支持子文件夹和单题测试等功能的版本在 [Dust1404/Project_LemonPlus](https://github.com/Dust1404/Project_LemonPlus) 。 **注意** macOS 下 Lemon 可能会出现内存测试不准确的情况,这是由于 mac 下没有一些 Linux 的监测工具,而 Lemon-Linux 也没有对于 macOS 的使用优化。 @@ -232,4 +232,4 @@ players/ ## CCR-Plus -一款开源的界面好看的评测工具 GitHub 地址:[sxyzccr/CCR-Plus](https://github.com/sxyzccr/CCR-Plus) +一款开源的界面好看的评测工具 GitHub 地址: [sxyzccr/CCR-Plus](https://github.com/sxyzccr/CCR-Plus) diff --git a/docs/intro/non-trad.md b/docs/intro/non-trad.md index 0070b8c7..946dbc7f 100644 --- a/docs/intro/non-trad.md +++ b/docs/intro/non-trad.md @@ -21,13 +21,13 @@ author: Ir1d, hsfzLZH1, CBW2007, Xeonacid, H-J-Granger, kawa-yoiko ### STDIO 交互 -STDIO 交互(标准 I/O 交互)是 Codeforces、AtCoder 等在线平台的交互手段,也是 ICPC 系列赛事中的标准。[LOJ #559.「LibreOJ Round #9」ZQC 的迷宫](https://loj.ac/problem/559)是一道典型的 STDIO 交互题。[这里](https://codeforces.com/blog/entry/45307)是 Codeforces 的一个更加简要的说明。 +STDIO 交互(标准 I/O 交互)是 Codeforces、AtCoder 等在线平台的交互手段,也是 ICPC 系列赛事中的标准。 [LOJ #559.「LibreOJ Round #9」ZQC 的迷宫](https://loj.ac/problem/559) 是一道典型的 STDIO 交互题。 [这里](https://codeforces.com/blog/entry/45307) 是 Codeforces 的一个更加简要的说明。 对于这类题目,选手只需像往常一样将询问写到标准输出, **刷新输出缓冲** 后从标准输入读取结果。选手程序刷新输出缓冲后,通过管道连接它的测评程序(称为交互器)才能立刻接收到这些数据。在 C/C++ 中, `fflush(stdout)` 和 `std::cout << std::flush` 可以实现这个操作;Pascal 则是 `flush(output)` 。 ### Grader 交互 -Grader 交互方式常见于 IOI、APIO 等国际 OI 赛事(特别是 CMS 平台的竞赛)。[UOJ #206.【APIO2016】Gap](http://uoj.ac/problem/206)是一道典型的 grader 交互题。 +Grader 交互方式常见于 IOI、APIO 等国际 OI 赛事(特别是 CMS 平台的竞赛)。 [UOJ #206.【APIO2016】Gap](http://uoj.ac/problem/206) 是一道典型的 grader 交互题。 对于这类题目,选手只需编写一个特定的函数完成某项任务,它通过调用给定的若干辅助函数来进行交互。为了便于选手在本地测试,题目会下发一个头文件与一个参考测评程序 `grader.cpp` (对于 Pascal 语言是一个库 `graderlib` ),选手将自己的程序与 `grader.cpp` 一同编译方可得到可执行文件。 @@ -48,7 +48,7 @@ STDIO 交互的一个明显优势在于它可以支持任何编程语言,但 ## 通信题 -在通信题中,选手需要编写 **两个** 程序,合作完成某项任务。第一个程序接收问题的输入,并产生某些输出;第二个程序的输入会与第一个的输出相关(有时是原封不动地作为一个参数,有时会由评测端处理得到),它需要产生问题的解。[UOJ #178. 新年的贺电](http://uoj.ac/problem/178)和[#454.【UER #8】打雪仗](http://uoj.ac/problem/454)都是典型的通信题。 +在通信题中,选手需要编写 **两个** 程序,合作完成某项任务。第一个程序接收问题的输入,并产生某些输出;第二个程序的输入会与第一个的输出相关(有时是原封不动地作为一个参数,有时会由评测端处理得到),它需要产生问题的解。 [UOJ #178. 新年的贺电](http://uoj.ac/problem/178) 和 [#454.【UER #8】打雪仗](http://uoj.ac/problem/454) 都是典型的通信题。 本地测试的方法由于题目设定的不同而多种多样,常用的如: @@ -67,10 +67,10 @@ STDIO 交互的一个明显优势在于它可以支持任何编程语言,但 其实你可以理解为一道交互题中,你变成了编写前面讲到的辅助函数,而选手代码就是给出的程序。 -这种题在[LeetCode](https://leetcode.com/)、[PTA - 拼题 A](https://pintia.cn/problem-sets)上比较多见,没见过的可以去看一看。 +这种题在 [LeetCode](https://leetcode.com/) 、 [PTA - 拼题 A](https://pintia.cn/problem-sets) 上比较多见,没见过的可以去看一看。 ## 其他类型 -比如说[Quine](https://loj.ac/problem/4),这道题要求的是编写一个程序使得你的程序能够输出它本身(要求程序包含可见字符)。 +比如说 [Quine](https://loj.ac/problem/4) ,这道题要求的是编写一个程序使得你的程序能够输出它本身(要求程序包含可见字符)。 这是一道经典题,但是在绝大多数 OJ 上都很难实现。 diff --git a/docs/intro/oi.md b/docs/intro/oi.md index f63e367c..1c1cda05 100644 --- a/docs/intro/oi.md +++ b/docs/intro/oi.md @@ -10,7 +10,7 @@ OI 竞赛中允许使用的语言包括 Pascal(NOI 将于 2020 年停止使用 NOIP(National Olympiad in Informatics in Provinces)是全国青少年信息学奥林匹克联赛,顾名思义,是以省为单位排名评奖,对于大部分高校来说,获得提高组省一等奖可以用于获得自主招生资格。 -NOIP 分为初赛和复赛两个阶段。初赛会考察一些计算机基础知识和算法基础,复赛是上机考试,也分提高组和普及组,时间上一般是 11 月的第二个周末,周六上午提高组 1 试 8:30-12:00(3.5h,共 3 题),下午 14:30-18:00 普及组(3.5h,共 4 题),周日上午提高组 2 试 8:30-12:00(3.5h,共 3 题)。全国使用同一套试卷,但是评奖规则是按照省内情况由 CCF(中国计算机学会)统一指定,并于赛后在[NOI 官方网站](http://www.noi.cn)上公布。各省的一等奖分数线略有不同。 +NOIP 分为初赛和复赛两个阶段。初赛会考察一些计算机基础知识和算法基础,复赛是上机考试,也分提高组和普及组,时间上一般是 11 月的第二个周末,周六上午提高组 1 试 8:30-12:00(3.5h,共 3 题),下午 14:30-18:00 普及组(3.5h,共 4 题),周日上午提高组 2 试 8:30-12:00(3.5h,共 3 题)。全国使用同一套试卷,但是评奖规则是按照省内情况由 CCF(中国计算机学会)统一指定,并于赛后在 [NOI 官方网站](http://www.noi.cn) 上公布。各省的一等奖分数线略有不同。 ### 省选 @@ -62,17 +62,17 @@ IOI 赛制可以赛时任意提交,可以即时查看评测结果,APIO、IOI 在 ACM/ICPC 比赛中一般是三个人使用一台机器,每个题目只有在所有数据点全部正确后才能得到分数。比赛过程中可以有多次提交机会,实时评测并返回结果。比赛排名根据做题数和罚时来评判,罚时是通过题目的用时之和加上错误提交次数乘以一个系数。在 ACM 相关赛事中,选手允许带纸质资料。 -参见[ICPC/CCPC 赛事与赛制](/intro/icpc)。 +参见 [ICPC/CCPC 赛事与赛制](/intro/icpc) 。 ### Codeforces (CF) 赛制 -[Codeforces](https://codeforces.com)是一个在线评测系统,定期会举办比赛。它的比赛特点是在比赛过程中只测试一部分数据(pretests),而在比赛结束后返回完整的所有测试点的测试结果(system tests)。比赛时可以多次提交,允许 hack 别人的代码(此处 hack 的意思是提交一个测试数据,使得别人的代码无法给出正确答案)。当然,如果想要 hack,必须要锁定自己的代码(换言之,比赛时无法重新提交该题)。 + [Codeforces](https://codeforces.com) 是一个在线评测系统,定期会举办比赛。它的比赛特点是在比赛过程中只测试一部分数据(pretests),而在比赛结束后返回完整的所有测试点的测试结果(system tests)。比赛时可以多次提交,允许 hack 别人的代码(此处 hack 的意思是提交一个测试数据,使得别人的代码无法给出正确答案)。当然,如果想要 hack,必须要锁定自己的代码(换言之,比赛时无法重新提交该题)。 ## 其他国家和地区的 OI 竞赛 ### 美国:USACO -官网地址: +官网地址: USACO 或许是国内选手最熟悉的外国 OI 竞赛(因此可能也是中文题解最多的外国 OI 竞赛)。 每年冬季到初春,USACO 会每月举办一场网络赛。一场比赛持续 $3\sim5$ 个小时。 @@ -87,11 +87,11 @@ USACO 或许是国内选手最熟悉的外国 OI 竞赛(因此可能也是中 ### 波兰:POI -官网: -官方提交地址: +官网: +官方提交地址: POI 是不少省选选手最常刷的外国 OI 比赛。 -根据(已经凉凉的)的描述,POI 的流程如下: +根据(已经凉凉的) 的描述,POI 的流程如下: - 第一轮:五题,网络赛,公开赛。 - 第二轮:包含一场练习赛,和两场正式比赛。 @@ -104,8 +104,8 @@ POI 是不少省选选手最常刷的外国 OI 比赛。 ### 克罗地亚:COCI -官网地址: -(有时候英文版的更新会延迟,克罗地亚语版本:) +官网地址: +(有时候英文版的更新会延迟,克罗地亚语版本: ) 难度跨度很大的比赛,大约是从普及 - $\sim$ 省选 -。以往 COCI 所有的题目均提供题目、数据、题解和标程,然而从 2017 年底之后,COCI 的题解和标程就断更了(不是没有英语版翻译,而是连克罗地亚语的版本都没有)。 @@ -113,7 +113,7 @@ POI 是不少省选选手最常刷的外国 OI 比赛。 ### 日本:JOI -官网地址: +官网地址: 日本信息学奥赛(日本情報オリンピック)一般简称为 JOI。JOI 所有的题目都提供题目、数据、题解和标程。近两年的 JOI 决赛和春训营提供了英语题面,但并没有英语题解。历年的 JOI Open 都提供了英语版题面和题解。绝大部分 JOI 题可以左转 AtCoder 提交。 JOI 的流程: @@ -139,8 +139,8 @@ JOI Final 的难度在提高 - $\sim$ 提高 + 左右。JOISC 和 JOI Open 的 ### 俄罗斯:ROI 俄罗斯信息学奥赛(олимпиадная информатика)一般简称为 ROI。 -官网: -在线提交地址: +官网: +在线提交地址: 一般简称为 ROI。流程: - 市级比赛(Municipal stage/Муниципальный этап) @@ -153,15 +153,15 @@ JOI Final 的难度在提高 - $\sim$ 提高 + 左右。JOISC 和 JOI Open 的 CCC: Canadian Computing Competition CCO: Canadian Computing Olympiad -官网地址: -CCC 提交地址:[https://dmoj.ca/problems/?category=4](https://dmoj.ca/problems/?category=4) -CCO 提交地址:[https://dmoj.ca/problems/?category=24](https://dmoj.ca/problems/?category=24) +官网地址: +CCC 提交地址: [https://dmoj.ca/problems/?category=4](https://dmoj.ca/problems/?category=4) +CCO 提交地址: [https://dmoj.ca/problems/?category=24](https://dmoj.ca/problems/?category=24) CCC 在 DMOJ 有官方 (?) 题解。 CCC Junior/Senior 贴近 NOIP 普及组/提高组难度。CCO 想要拿到金牌可能得有 NOI 银的水平。 ### 法国与澳大利亚:FARIO -提交地址: +提交地址: FARIO 的题目与 NOI 的难度旗鼓相当。 @@ -170,7 +170,7 @@ FARIO 的题目与 NOI 的难度旗鼓相当。 ### BalticOI BalticOI 面向的是波罗的海周边各国。BalticOI 2018 的参赛国有立陶宛、波兰、爱沙尼亚、芬兰等 9 国。 -除了 2017 年,BalticOI 每年都公开题面、测试数据和题解。然而 BalticOI 没有一个固定的官网,每年的主办方都会新建一个网站……关于历年的官网地址,Planet6174 整理出了一个[帖子](https://loj.ac/article/416)。 +除了 2017 年,BalticOI 每年都公开题面、测试数据和题解。然而 BalticOI 没有一个固定的官网,每年的主办方都会新建一个网站……关于历年的官网地址,Planet6174 整理出了一个 [帖子](https://loj.ac/article/416) 。 目前 LibreOJ 有近十年的 BalticOI 题。 ### BalkanOI @@ -188,6 +188,6 @@ CEOI 每年都公开题面、测试数据和题解,官网地址参见上面那 ### Nordic Olympiads in Informatics (NOI) -官网地址: +官网地址: 近两年才开始举办的比赛,面向北欧各国。 diff --git a/docs/intro/oj-tool.md b/docs/intro/oj-tool.md index ebd1af6d..c914c472 100644 --- a/docs/intro/oj-tool.md +++ b/docs/intro/oj-tool.md @@ -1,6 +1,6 @@ ## cf-tool -GitHub 地址:[xalanq/cf-tool](https://github.com/xalanq/cf-tool/) +GitHub 地址: [xalanq/cf-tool](https://github.com/xalanq/cf-tool/) cf-tool 是 Codeforces 的命令行界面的跨平台(支持 Windows、Linux、OS X)工具,其支持很多常用操作。 @@ -24,7 +24,7 @@ cf-tool 是 Codeforces 的命令行界面的跨平台(支持 Windows、Linux ### 下载 -前往[cf-tool/releases](https://github.com/xalanq/cf-tool/releases)下载最新版。 +前往 [cf-tool/releases](https://github.com/xalanq/cf-tool/releases) 下载最新版。 之后的更新可以直接使用 `upgrade` 命令获取。 @@ -38,7 +38,7 @@ cf-tool 是 Codeforces 的命令行界面的跨平台(支持 Windows、Linux `cf race 1136` -要开始打 1136 这场比赛了!其中 1136 可以从比赛的链接获取,比方说这个例子的比赛链接就为。 +要开始打 1136 这场比赛了!其中 1136 可以从比赛的链接获取,比方说这个例子的比赛链接就为 。 如果比赛还未开始,则该命令会进行倒计时。比赛已开始或倒计时完后,工具会自动用默认浏览器打开比赛的所有题目页面,并拉取样例到本地。 @@ -88,15 +88,15 @@ cf-tool 是 Codeforces 的命令行界面的跨平台(支持 Windows、Linux 4. 在终端里启用 tab 补全命令 - 使用这个工具[Infinidat/infi.docopt_completion](https://github.com/Infinidat/infi.docopt_completion)即可。 + 使用这个工具 [Infinidat/infi.docopt_completion](https://github.com/Infinidat/infi.docopt_completion) 即可。 注意:如果有一个新版本发布(尤其是添加了新命令),你应该重新运行 `docopt-completion cf` 。 ## Codeforces Visualizer -网站:。 +网站: 。 -您可以在[GitHub](https://github.com/sjsakib/cfviz/)上查阅到它的源代码。 +您可以在 [GitHub](https://github.com/sjsakib/cfviz/) 上查阅到它的源代码。 这个网站有三个功能: diff --git a/docs/intro/resources.md b/docs/intro/resources.md index 517261b5..d05f13c2 100644 --- a/docs/intro/resources.md +++ b/docs/intro/resources.md @@ -6,60 +6,60 @@ author: Konano, Enter-tainer, JulieSigtuna, GldHkkowo ### 国内 -- [51Nod](https://www.51nod.com/)有许多值得尝试的数学题和思维题。 -- [BZOJ](https://www.lydsy.com/JudgeOnline/)因原属衡阳八中而得简称,汇聚多种习题和真题,题目质量相对较高,但可能需要联系邮箱。 -- [Comet OJ](https://www.cometoj.com)旨在为广大算法爱好者提供一个竞技、练习、交流的平台,经常举办原创性的高质量比赛,有丰富的题库。 -- [CodeVS](http://www.codevs.cn/)面向 OI 选手的过气 OJ -- [FZUOJ](http://acm.fzu.edu.cn/)福州大学 -- [HDU Online Judge](http://acm.hdu.edu.cn/)杭电的 OJ,有多校训练的题目。 -- [hihoCoder](https://hihocoder.com/)面向企业招聘,有些题目来自于每周一题,涉及知识点的学习。(题面登录后可见) -- [计蒜客](https://www.jisuanke.com/) -- [Judge Duck Online](https://duck.ac/)松松松开发的评测系统,可以将评测程序的运行时间精确到 $\mu s$ 。(题目较少) -- [JoyOI](http://www.joyoi.cn/)原 Tyvj。 -- [LibreOJ](https://loj.ac/)Libre 取自由之意,基于开源项目 SYZOJ。 +- [51Nod](https://www.51nod.com/) 有许多值得尝试的数学题和思维题。 +- [BZOJ](https://www.lydsy.com/JudgeOnline/) 因原属衡阳八中而得简称,汇聚多种习题和真题,题目质量相对较高,但可能需要联系邮箱。 +- [Comet OJ](https://www.cometoj.com) 旨在为广大算法爱好者提供一个竞技、练习、交流的平台,经常举办原创性的高质量比赛,有丰富的题库。 +- [CodeVS](http://www.codevs.cn/) 面向 OI 选手的过气 OJ +- [FZUOJ](http://acm.fzu.edu.cn/) 福州大学 +- [HDU Online Judge](http://acm.hdu.edu.cn/) 杭电的 OJ,有多校训练的题目。 +- [hihoCoder](https://hihocoder.com/) 面向企业招聘,有些题目来自于每周一题,涉及知识点的学习。(题面登录后可见) +- [计蒜客](https://www.jisuanke.com/) +- [Judge Duck Online](https://duck.ac/) 松松松开发的评测系统,可以将评测程序的运行时间精确到 $\mu s$ 。(题目较少) +- [JoyOI](http://www.joyoi.cn/) 原 Tyvj。 +- [LibreOJ](https://loj.ac/) Libre 取自由之意,基于开源项目 SYZOJ。 题目所有测试数据以及提交的代码均对所有用户开放。 与一本通进行了合作,可以评测一本通上所有习题。 目前由 Menci 维护。 -- [洛谷](https://www.luogu.org/)始于 2013 年,社区群体庞大,OI 界的真题和习题较全,提供有偿教育服务。 -- [牛客网](https://www.nowcoder.com/) -- [OpenJudge](http://openjudge.cn/)由 POJ 团队开发的小组评测平台。 -- [POJ](http://poj.org/)PKU OJ,国内历史最悠久的 OJ 之一,很多英文题,既有基础题,也有值得一试的好题。 -- [PTA - 拼题 A](https://pintia.cn/) -- [Universal Online Judge](http://uoj.ac/)Universal 取通用之意,也是开源项目。VFK 的 OJ,多原创比赛题和 CCF/THU 题,难度较高。 -- [Vijos](https://vijos.org/)始于 2005 年,有开源项目。 -- [Virtual Judge](https://vjudge.net/)可以方便的在 Vjudge 上提交别的 OJ 的题,尤其是一些国内不太方便的 OJ。 -- [ZOJ](http://acm.zju.edu.cn/onlinejudge/)浙江大学在线测评系统。 -- [NOJ](http://acm.njupt.edu.cn/)南京邮电大学在线测评系统,自身拥有题目两千余,同时支持对多个国内外 OJ 的提交,可以直接在 NOJ 提交别的 OJ 的题。 -- [Lutece](https://acm.uestc.edu.cn/home)电子科技大学在线测评系统,基于开源项目[Lutece](https://github.com/lutece-awesome)。 +- [洛谷](https://www.luogu.org/) 始于 2013 年,社区群体庞大,OI 界的真题和习题较全,提供有偿教育服务。 +- [牛客网](https://www.nowcoder.com/) +- [OpenJudge](http://openjudge.cn/) 由 POJ 团队开发的小组评测平台。 +- [POJ](http://poj.org/) PKU OJ,国内历史最悠久的 OJ 之一,很多英文题,既有基础题,也有值得一试的好题。 +- [PTA - 拼题 A](https://pintia.cn/) +- [Universal Online Judge](http://uoj.ac/) Universal 取通用之意,也是开源项目。VFK 的 OJ,多原创比赛题和 CCF/THU 题,难度较高。 +- [Vijos](https://vijos.org/) 始于 2005 年,有开源项目。 +- [Virtual Judge](https://vjudge.net/) 可以方便的在 Vjudge 上提交别的 OJ 的题,尤其是一些国内不太方便的 OJ。 +- [ZOJ](http://acm.zju.edu.cn/onlinejudge/) 浙江大学在线测评系统。 +- [NOJ](http://acm.njupt.edu.cn/) 南京邮电大学在线测评系统,自身拥有题目两千余,同时支持对多个国内外 OJ 的提交,可以直接在 NOJ 提交别的 OJ 的题。 +- [Lutece](https://acm.uestc.edu.cn/home) 电子科技大学在线测评系统,基于开源项目 [Lutece](https://github.com/lutece-awesome) 。 ### 国外 -- [AtCoder](https://atcoder.jp/)日本 OJ,日文版里会有日本高校的比赛,英文内不会显示。(题目有趣,质量较高) -- [CodeChef](https://codechef.com/)印度 OJ,周期性有比赛。 -- [Codeforces](https://codeforces.com/)俄罗斯 OJ,有多种系列的比赛,你也可以出题并申请组织比赛。(题目质量较高) -- [CS Academy](https://csacademy.com/) -- [DMOJ](https://dmoj.ca/)加拿大开源的 OJ,语言支持广;题库是各大比赛的存档,也有定期自行举办的比赛。 -- [HackerRank](https://www.hackerrank.com/)有很多比赛 -- [Kattis](https://open.kattis.com/) -- [LeetCode](https://leetcode.com/)有中文分站:[LeetCode China](https://leetcode-cn.com/) -- [SPOJ](http://www.spoj.com) -- [Topcoder](https://www.topcoder.com/)有很多比赛 -- [Ural](http://acm.timus.ru/) -- [UVaOJ](https://uva.onlinejudge.org/)国际成名最早的 OJ,由 The University of Virginia 开发,刘汝佳强烈安利。 -- [Yandex](https://contest.yandex.ru/)存档了近几年的全俄罗斯信息学奥赛 -- [Light OJ](http://lightoj.com)一个快挂了的 OJ, `www` 域名无法访问,请使用[根域名](http://lightoj.com)访问 +- [AtCoder](https://atcoder.jp/) 日本 OJ,日文版里会有日本高校的比赛,英文内不会显示。(题目有趣,质量较高) +- [CodeChef](https://codechef.com/) 印度 OJ,周期性有比赛。 +- [Codeforces](https://codeforces.com/) 俄罗斯 OJ,有多种系列的比赛,你也可以出题并申请组织比赛。(题目质量较高) +- [CS Academy](https://csacademy.com/) +- [DMOJ](https://dmoj.ca/) 加拿大开源的 OJ,语言支持广;题库是各大比赛的存档,也有定期自行举办的比赛。 +- [HackerRank](https://www.hackerrank.com/) 有很多比赛 +- [Kattis](https://open.kattis.com/) +- [LeetCode](https://leetcode.com/) 有中文分站: [LeetCode China](https://leetcode-cn.com/) +- [SPOJ](http://www.spoj.com) +- [Topcoder](https://www.topcoder.com/) 有很多比赛 +- [Ural](http://acm.timus.ru/) +- [UVaOJ](https://uva.onlinejudge.org/) 国际成名最早的 OJ,由 The University of Virginia 开发,刘汝佳强烈安利。 +- [Yandex](https://contest.yandex.ru/) 存档了近几年的全俄罗斯信息学奥赛 +- [Light OJ](http://lightoj.com) 一个快挂了的 OJ, `www` 域名无法访问,请使用 [根域名](http://lightoj.com) 访问 ## 教程 -- [OI Wiki](https://oi-wiki.org) -- [Codeforces 上网友整理的一份教程合集](http://codeforces.com/blog/entry/57282) -- [英文版 E-Maxx 算法教程](https://cp-algorithms.com/) -- [演算法笔记](http://www.csie.ntnu.edu.tw/~u91029/)(台湾师范大学总结的教程) -- [algo.is](https://algo.is/t-414-aflv-competitive-programming-course-2016/) -- [CS 97SI: Introduction to Programming Contests](http://web.stanford.edu/class/cs97si/)(斯坦福的一门课) -- [如何为 ACM-ICPC 做准备?- geeksforgeeks](https://www.geeksforgeeks.org/how-to-prepare-for-acm-icpc/) -- [Topcoder 整理的教程](https://www.topcoder.com/community/competitive-programming/tutorials/) -- [校招面试指南](https://github.com/jwasham/coding-interview-university) +- [OI Wiki](https://oi-wiki.org) +- [Codeforces 上网友整理的一份教程合集](http://codeforces.com/blog/entry/57282) +- [英文版 E-Maxx 算法教程](https://cp-algorithms.com/) +- [演算法笔记](http://www.csie.ntnu.edu.tw/~u91029/) (台湾师范大学总结的教程) +- [algo.is](https://algo.is/t-414-aflv-competitive-programming-course-2016/) +- [CS 97SI: Introduction to Programming Contests](http://web.stanford.edu/class/cs97si/) (斯坦福的一门课) +- [如何为 ACM-ICPC 做准备?- geeksforgeeks](https://www.geeksforgeeks.org/how-to-prepare-for-acm-icpc/) +- [Topcoder 整理的教程](https://www.topcoder.com/community/competitive-programming/tutorials/) +- [校招面试指南](https://github.com/jwasham/coding-interview-university) ## 书籍 @@ -67,62 +67,62 @@ author: Konano, Enter-tainer, JulieSigtuna, GldHkkowo - 刘汝佳系列 - 《算法竞赛入门经典》(紫) - - [第一版 配套资源仓库(镜像)](https://github.com/sukhoeing/aoapc-book/) - - [第二版 配套资源仓库](https://github.com/aoapc-book/aoapc-bac2nd) - - [第二版 习题选解](https://github.com/sukhoeing/aoapc-bac2nd-keys) + - [第一版 配套资源仓库(镜像)](https://github.com/sukhoeing/aoapc-book/) + - [第二版 配套资源仓库](https://github.com/aoapc-book/aoapc-bac2nd) + - [第二版 习题选解](https://github.com/sukhoeing/aoapc-bac2nd-keys) - 《算法竞赛入门经典 - 训练指南》(白/蓝)- 陈锋 合著 - 《算法艺术与信息学竞赛》(蓝/黑) - 《算法竞赛进阶指南》- 李煜东 - - [配套资源仓库](https://github.com/lydrainbowcat/tedukuri) + - [配套资源仓库](https://github.com/lydrainbowcat/tedukuri) - 《啊哈算法》- 纪磊 面向初学者或有初步兴趣的人群,有幽默配图。 - 教练圈推荐 - 《信息学奥赛一本通》- 董永建 - - 《信息学奥赛一本通 - 提高篇》- 黄新军,董永建[建议选择性阅读。](https://www.zhihu.com/question/292926937) + - 《信息学奥赛一本通 - 提高篇》- 黄新军,董永建 [建议选择性阅读。](https://www.zhihu.com/question/292926937) - 《算法导论》第三版 - Thomas H.Cormen/Charles E.Leiserson/Ronald L.Rivest/Clifford Stein 黑书,大学经典教材。英文版原名_Introduction to Algorithms_ - - [答案解析 (English)](https://github.com/walkccc/CLRS) + - [答案解析 (English)](https://github.com/walkccc/CLRS) - 《具体数学》第二版 - Ronald L. Graham/Donald E. Knuth/Oren Patashnik 英文版原名_Concrete Mathematics_ - 《组合数学》第五版 - Richard A.Brualdi 英文版原名_Concrete mathematices_ -- [Competitive Programmer's Handbook](https://cses.fi/book/index.html) +- [Competitive Programmer's Handbook](https://cses.fi/book/index.html) - 《挑战程序设计竞赛》全套 - 秋叶拓哉,岩田阳一,北川宜稔 通俗易懂。 - - [译者博客介绍页](http://blog.watashi.ws/2382/pccb-etc/) + - [译者博客介绍页](http://blog.watashi.ws/2382/pccb-etc/) - 《算法概论》- Sanjoy Dasgupta/Christos Papadimitriou/Umesh Vazirani 提纲挚领,但内容较少。 -- [Legend-K 的数据结构与算法的笔记](http://www.legend-k.com/Algorithm/Algorithm.pdf) -- [acm-cheat-sheet](https://github.com/soulmachine/acm-cheat-sheet) +- [Legend-K 的数据结构与算法的笔记](http://www.legend-k.com/Algorithm/Algorithm.pdf) +- [acm-cheat-sheet](https://github.com/soulmachine/acm-cheat-sheet) ## 工具 -- [VisuAlgo](https://visualgo.net/en)(经典算法的可视化结果) -- [USF](https://www.cs.usfca.edu/~galles/visualization/)(算法可视化) -- [Algomation](http://www.algomation.com/) -- [Algorithm Visualizer](http://algorithm-visualizer.org) -- [OEIS](https://oeis.org)(整数数列搜索引擎) -- [Inverse Symbolic Calculator](http://wayback.cecm.sfu.ca/projects/ISC/ISCmain.html)(实数反查表达式,专治不明常数) -- [Try It Online](https://tio.run)(简单在线跑 600+ 种语言的代码,兹磁 IO 交互,超时 60s,可以分享代码) -- [Ubuntu Pastebin](https://paste.ubuntu.com)(可以用来分享代码) -- [uDebug](https://www.udebug.com)(提供一些 OJ 题目的调试辅助) -- [cppreference.com](https://zh.cppreference.com/w/)(提供 C++ 内语法的查询等) -- [图论画板](https://csacademy.com/app/graph_editor/)(同时推荐[GraphViz](http://www.graphviz.org/)) -- [ $\LaTeX{}$ 数学公式参考](http://www.mohu.org/info/symbols/symbols.htm) -- [Godbolt](https://godbolt.org/)(在浏览器中查看编译后代码块对应的汇编语句) -- [《100 个 gdb 小技巧》](https://github.com/hellogcc/100-gdb-tips) -- [Mathpix](https://mathpix.com/)(截图转 $\LaTeX{}$ ) -- [ $\LaTeX$ 手写符号识别](http://detexify.kirelabs.org/classify.html) -- [Wolfram Alpha](https://www.wolframalpha.com/):(可以解答各种问题) +- [VisuAlgo](https://visualgo.net/en) (经典算法的可视化结果) +- [USF](https://www.cs.usfca.edu/~galles/visualization/) (算法可视化) +- [Algomation](http://www.algomation.com/) +- [Algorithm Visualizer](http://algorithm-visualizer.org) +- [OEIS](https://oeis.org) (整数数列搜索引擎) +- [Inverse Symbolic Calculator](http://wayback.cecm.sfu.ca/projects/ISC/ISCmain.html) (实数反查表达式,专治不明常数) +- [Try It Online](https://tio.run) (简单在线跑 600+ 种语言的代码,兹磁 IO 交互,超时 60s,可以分享代码) +- [Ubuntu Pastebin](https://paste.ubuntu.com) (可以用来分享代码) +- [uDebug](https://www.udebug.com) (提供一些 OJ 题目的调试辅助) +- [cppreference.com](https://zh.cppreference.com/w/) (提供 C++ 内语法的查询等) +- [图论画板](https://csacademy.com/app/graph_editor/) (同时推荐 [GraphViz](http://www.graphviz.org/) ) +- [ $\LaTeX{}$ 数学公式参考](http://www.mohu.org/info/symbols/symbols.htm) +- [Godbolt](https://godbolt.org/) (在浏览器中查看编译后代码块对应的汇编语句) +- [《100 个 gdb 小技巧》](https://github.com/hellogcc/100-gdb-tips) +- [Mathpix](https://mathpix.com/) (截图转 $\LaTeX{}$ ) +- [ $\LaTeX$ 手写符号识别](http://detexify.kirelabs.org/classify.html) +- [Wolfram Alpha](https://www.wolframalpha.com/) :(可以解答各种问题) ## 题集和资源 -- [POJ 训练计划](http://blog.csdn.net/skywalkert/article/details/46594541) -- [USACO](http://train.usaco.org/usacogate) -- [洛谷试炼场](https://www.luogu.org/training/mainpage) -- [-Morass- 贴在 Codeforces 上的一份题单](https://codeforces.com/blog/entry/55274) -- [北京大学 ICPC 暑期课课件例题](https://vjudge.net/article/446) -- [北京大学 ICPC 暑期课课件](https://lib-pku.github.io/#acm-icpc%E6%9A%91%E6%9C%9F%E8%AF%BE) -- [GitHub.com:OI-wiki/libs](https://github.com/OI-wiki/libs) -- [多校联合训练](http://acm.hdu.edu.cn)关键词: `Multi-University Training Contest` -- [Vjudge](https://vjudge.net/) +- [POJ 训练计划](http://blog.csdn.net/skywalkert/article/details/46594541) +- [USACO](http://train.usaco.org/usacogate) +- [洛谷试炼场](https://www.luogu.org/training/mainpage) +- [-Morass- 贴在 Codeforces 上的一份题单](https://codeforces.com/blog/entry/55274) +- [北京大学 ICPC 暑期课课件例题](https://vjudge.net/article/446) +- [北京大学 ICPC 暑期课课件](https://lib-pku.github.io/#acm-icpc%E6%9A%91%E6%9C%9F%E8%AF%BE) +- [GitHub.com:OI-wiki/libs](https://github.com/OI-wiki/libs) +- [多校联合训练](http://acm.hdu.edu.cn) 关键词: `Multi-University Training Contest` +- [Vjudge](https://vjudge.net/) diff --git a/docs/intro/spj.md b/docs/intro/spj.md index 3d2696ee..b2e34dd5 100644 --- a/docs/intro/spj.md +++ b/docs/intro/spj.md @@ -9,15 +9,15 @@ ## Testlib -Testlib 的介绍见[Testlib/简介](/intro/testlib/)页面,用法见[Testlib/Checker](/intro/testlib/checker/)页面。 +Testlib 的介绍见 [Testlib/简介](/intro/testlib/) 页面,用法见 [Testlib/Checker](/intro/testlib/checker/) 页面。 必须使用 Testlib 做 spj 的 评测工具/OJ:Codeforces、洛谷、UOJ 等 可以使用 Testlib 做 spj 的 评测工具/OJ:LibreOJ(SYZOJ 2)、Lemon 等 -SYZOJ 2 所需的修改版 Testlib 可以在[这里](https://pastebin.com/3GANXMG7)获取到,感谢[cyand1317](https://loj.ac/article/124)。 +SYZOJ 2 所需的修改版 Testlib 可以在 [这里](https://pastebin.com/3GANXMG7) 获取到,感谢 [cyand1317](https://loj.ac/article/124) 。 -Lemon 所需的修改版 Testlib 可以在[这里](https://paste.ubuntu.com/p/JsTspHHnmB/)获取到,感谢 matthew99。注意此版本 Testlib 注册 checker 应使用 `registerLemonChecker()` 而非 `registerTestlibCmd()` 。 +Lemon 所需的修改版 Testlib 可以在 [这里](https://paste.ubuntu.com/p/JsTspHHnmB/) 获取到,感谢 matthew99。注意此版本 Testlib 注册 checker 应使用 `registerLemonChecker()` 而非 `registerTestlibCmd()` 。 其他评测工具/OJ 大部分需要按照其 spj 编写格式修改 Testlib(并将 testlib.h 与 spj 一同上传,或将 testlib.h 置于 include 目录)。 @@ -41,7 +41,7 @@ int main(int argc, char *argv[]) { ## Lemon - **Lemon 有现成的修改版 Testlib,建议使用 Testlib,见[Testlib](#testlib)** + **Lemon 有现成的修改版 Testlib,建议使用 Testlib,见 [Testlib](#testlib) ** ```cpp #include @@ -195,7 +195,7 @@ int main(int argc, char* argv[]) { ## LibreOJ(SYZOJ 2) - **LibreOJ(SYZOJ 2) 有现成的修改版 Testlib,建议使用 Testlib,见[Testlib](#testlib)** + **LibreOJ(SYZOJ 2) 有现成的修改版 Testlib,建议使用 Testlib,见 [Testlib](#testlib) ** ```cpp #include diff --git a/docs/intro/testlib/checker.md b/docs/intro/testlib/checker.md index d8509f7b..5ca5cbea 100644 --- a/docs/intro/testlib/checker.md +++ b/docs/intro/testlib/checker.md @@ -1,8 +1,8 @@ -Checker,即[Special Judge](/intro/spj),用于检验答案是否合法。使用 Testlib 可以让我们免去检验许多东西,使编写简单许多。 +Checker,即 [Special Judge](/intro/spj) ,用于检验答案是否合法。使用 Testlib 可以让我们免去检验许多东西,使编写简单许多。 Checker 从命令行参数读取到输入文件名、选手输出文件名、标准输出文件名,并确定选手输出是否正确,并返回一个预定义的结果: -请在阅读下文前先阅读[通用](./general.md)。 +请在阅读下文前先阅读 [通用](./general.md) 。 ## 简单的例子 @@ -233,4 +233,4 @@ int main(int argc, char* argv[]) { - 使用项别名 - **本文翻译自[Checkers with testlib.h - Codeforces](https://codeforces.com/blog/entry/18431)。 `testlib.h` 的 GitHub 存储库为[MikeMirzayanov/testlib](https://github.com/MikeMirzayanov/testlib)。** + **本文翻译自 [Checkers with testlib.h - Codeforces](https://codeforces.com/blog/entry/18431) 。 `testlib.h` 的 GitHub 存储库为 [MikeMirzayanov/testlib](https://github.com/MikeMirzayanov/testlib) 。** diff --git a/docs/intro/testlib/generator.md b/docs/intro/testlib/generator.md index 390c97bf..2cc31912 100644 --- a/docs/intro/testlib/generator.md +++ b/docs/intro/testlib/generator.md @@ -43,7 +43,7 @@ int main(int argc, char* argv[]) { 另外,不要使用 `std::random_shuffle()` ,请使用 Testlib 中的 `shuffle()` ,它同样接受一对迭代器。它使用 `rnd` 来打乱序列,即满足如上“好的 generator”的要求。 -极简正则表达式:[通用](./general.md) +极简正则表达式: [通用](./general.md) ## 示例:生成一棵树 @@ -96,6 +96,6 @@ for (int i = 0; i + 1 < n; i++) ## 更多示例 -可以在[GitHub](https://github.com/MikeMirzayanov/testlib/tree/master/generators)中找到。 +可以在 [GitHub](https://github.com/MikeMirzayanov/testlib/tree/master/generators) 中找到。 - **本文翻译自[Генераторы на testlib.h - Codeforces](https://codeforces.com/blog/entry/18291)。 `testlib.h` 的 GitHub 存储库为[MikeMirzayanov/testlib](https://github.com/MikeMirzayanov/testlib)。** + **本文翻译自 [Генераторы на testlib.h - Codeforces](https://codeforces.com/blog/entry/18291) 。 `testlib.h` 的 GitHub 存储库为 [MikeMirzayanov/testlib](https://github.com/MikeMirzayanov/testlib) 。** diff --git a/docs/intro/testlib/index.md b/docs/intro/testlib/index.md index 05a2a071..0c61904f 100644 --- a/docs/intro/testlib/index.md +++ b/docs/intro/testlib/index.md @@ -4,13 +4,13 @@ Testlib 库仅有 `testlib.h` 一个文件,使用时仅需在所编写的程 Testlib 的具体用途: -- 编写[Generator](./generator.md),即数据生成器。 -- 编写[Validator](./validator.md),即数据校验器,判断生成数据是否符合题目要求,如数据范围、格式等。 -- 编写[Interactor](./interactor.md),即交互器,用于交互题。 -- 编写[Checker](./checker.md),即[Special Judge](/intro/spj/)。 +- 编写 [Generator](./generator.md) ,即数据生成器。 +- 编写 [Validator](./validator.md) ,即数据校验器,判断生成数据是否符合题目要求,如数据范围、格式等。 +- 编写 [Interactor](./interactor.md) ,即交互器,用于交互题。 +- 编写 [Checker](./checker.md) ,即 [Special Judge](/intro/spj/) 。 -Testlib 与 Codeforces 开发的[Polygon](https://polygon.codeforces.com/)出题平台完全兼容。 +Testlib 与 Codeforces 开发的 [Polygon](https://polygon.codeforces.com/) 出题平台完全兼容。 `testlib.h` 在 2005 年移植自 `testlib.pas` ,并一直在更新。Testlib 与绝大多数编译器兼容,如 VC++ 和 GCC g++,并兼容 C++11。 - **本文翻译自[Testlib - Codeforces](https://codeforces.com/testlib)。 `testlib.h` 的 GitHub 存储库为[MikeMirzayanov/testlib](https://github.com/MikeMirzayanov/testlib)。** + **本文翻译自 [Testlib - Codeforces](https://codeforces.com/testlib) 。 `testlib.h` 的 GitHub 存储库为 [MikeMirzayanov/testlib](https://github.com/MikeMirzayanov/testlib) 。** diff --git a/docs/intro/testlib/interactor.md b/docs/intro/testlib/interactor.md index b7260f54..d4bb8686 100644 --- a/docs/intro/testlib/interactor.md +++ b/docs/intro/testlib/interactor.md @@ -1,9 +1,9 @@ -Interactor,即交互器,用于交互题与选手程序交互。交互题的介绍见[非传统题](/intro/non-traditional/#_3)。 +Interactor,即交互器,用于交互题与选手程序交互。交互题的介绍见 [非传统题](/intro/non-traditional/#_3) 。 ???+note Testlib 仅支持 Codeforces 形式交互题,即两程序交互。不支持 NOI 形式的选手编写函数与其他函数交互。 -请在阅读下文前先阅读[通用](./general.md)。 +请在阅读下文前先阅读 [通用](./general.md) 。 Testlib 为 interactor 提供了一个特殊的流 `std::fstream tout` ,它是一个 log 流,你可以在 interactor 中向它写入,并在 checker 中用 `ouf` 读取。 diff --git a/docs/intro/testlib/validator.md b/docs/intro/testlib/validator.md index 7cfbeacc..214c9185 100644 --- a/docs/intro/testlib/validator.md +++ b/docs/intro/testlib/validator.md @@ -1,14 +1,14 @@ Validator,即校验器。当你造好了一道题的数据,感觉有点虚,担心数据不合法(不符合题目的限制条件):上溢、图不连通、不是树……你便需要 Validator 来帮助你检查数据是否合法。 -即便你非常有自信,也最好用 Validator 检查一下,比较稳妥。所有 Codeforces 上的题目都必须要有 Validator,[Polygon](https://polygon.codeforces.com/)内建了对 Validator 的支持。 +即便你非常有自信,也最好用 Validator 检查一下,比较稳妥。所有 Codeforces 上的题目都必须要有 Validator, [Polygon](https://polygon.codeforces.com/) 内建了对 Validator 的支持。 使用 Testlib 写 Validator 是很方便的。 -请在阅读下文前先阅读[通用](./general/)。(然后就没什么可说的了) +请在阅读下文前先阅读 [通用](./general/) 。(然后就没什么可说的了) ## 示例 -以下是[100541A - Stock Market](https://codeforces.com/gym/100541/problem/A)的 validator: +以下是 [100541A - Stock Market](https://codeforces.com/gym/100541/problem/A) 的 validator: ```cpp #include "testlib.h" @@ -37,7 +37,7 @@ int main(int argc, char* argv[]) { 真香,基本不会写出 bug。 -更多示例可以在[GitHub](https://github.com/MikeMirzayanov/testlib/tree/master/validators)中找到。 +更多示例可以在 [GitHub](https://github.com/MikeMirzayanov/testlib/tree/master/validators) 中找到。 ???+ warning Validator 是非常严格的,它需要保证有正确的空格或换行。例如当你读入一个整数时,当前流指针位置为一个空格后接一个整数,Testlib 仍将抛出错误。 diff --git a/docs/intro/wsl.md b/docs/intro/wsl.md index a2ba7bfb..5381c904 100644 --- a/docs/intro/wsl.md +++ b/docs/intro/wsl.md @@ -44,7 +44,7 @@ WSL 提供了一个微软开发的 Linux 兼容内核接口(不包含 Linux ## 开搞 去 Windows 自带的应用商店,搜索 "Ubuntu",然后选第一个安装。 -亦可打开 +亦可打开 ???+ warning Windows 10 商店的第一个 Ubuntu 随着 Ubuntu 的更新而更新,因此内容可能会有所改变。 可使用 `sudo lsb_release -a` 查看自己的 Ubuntu 版本。 @@ -64,9 +64,9 @@ WSL 提供了一个微软开发的 Linux 兼容内核接口(不包含 Linux ### 更换为国内软件源 -Ubuntu 默认的软件源在国外,我们可以换为国内的加快速度,如[清华 TUNA 的软件源](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/)。 +Ubuntu 默认的软件源在国外,我们可以换为国内的加快速度,如 [清华 TUNA 的软件源](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/) 。 -可以访问[TUNA 的页面](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/)来获得国内源的信息。 +可以访问 [TUNA 的页面](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/) 来获得国内源的信息。 ???+ warning **请在页面中寻找与自己系统版本相配的源(可使用 `sudo lsb_release -a` 查看,具体详见 `0x03` )** **除非你知道你在做什么,否则不要使用与自己的系统版本不匹配的源!** @@ -100,7 +100,7 @@ sudo dpkg-reconfigure locales 使用 `sudo dpkg-reconfigure locales` 进入菜单,按空格选择带 `zh_CN` 的选项,选完后回车,下一个菜单中选 `zh_CN.UTF-8` 打回车。 ![](./images/WSL10.png)![](./images/WSL11.png)之后关上 Ubuntu 重开一遍登录,是不是变中文了? -再依次输入下列命令,把 `man` 帮助页替换为中文:[via](https://blog.csdn.net/qq_14989227/article/details/72954523) +再依次输入下列命令,把 `man` 帮助页替换为中文: [via](https://blog.csdn.net/qq_14989227/article/details/72954523) ```bash sudo apt install manpages-zh @@ -122,7 +122,7 @@ chmod +x install.sh && ./install.sh ``` 这是基础的 + NOI 官方要求环境,如有需要可以用 `apt install 程序名` 来安装别的。 -若想安装其他版本可以参考下[这个](https://www.cnblogs.com/EasonJim/p/7144017.html) +若想安装其他版本可以参考下 [这个](https://www.cnblogs.com/EasonJim/p/7144017.html) 来个程序玩玩: @@ -179,7 +179,7 @@ sudo apt-get install xterm -y ##### 服务端:下载 Xming Server -去下载最新的 Xming Server,然后一路安装: +去 下载最新的 Xming Server,然后一路安装: ![](./images/WSL16.png) 如果你把 Launch Xming 框点掉了,记得去开始菜单再打开: ![别忘了!](./images/WSL17.png) @@ -231,23 +231,23 @@ xfce4-session 这里列举了文中提到的链接,以便查阅。 -1. [NOIP 标准评测系统及相关问题,smart0326, 2014-05-19, 百度文库](https://wenku.baidu.com/view/8246d96cdd36a32d72758143.html) -2. [WSL, 百度百科](https://baike.baidu.com/item/wsl/20359185) -3. [Run Bash on Ubuntu on Windows, Mike Harsh, 2016-05-30, Windows Blog](https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/#cie8WdR3uSjgR5Ru.97) -4. [Windows Subsystem for Linux Documentation, MSDN](https://docs.microsoft.com/zh-cn/windows/wsl/about) -5. [NOI 系列活动标准竞赛环境,2016-11-08, NOI 官网](http://www.noi.cn/2016-11-08-03-42-01) -6. [购买 Ubuntu, Microsoft Store](https://www.microsoft.com/zh-cn/p/ubuntu/9nblggh4msv6) -7. [Ubuntu 镜像使用帮助,清华 TUNA](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/) -8. [Ubuntu 的 man 命令帮助如何设置中文版,Frank 看庐山,2017-06-09](https://blog.csdn.net/qq_14989227/article/details/72954523) -9. [Xming X Server for Windows, SourceForge](https://sourceforge.net/projects/xming/) -10. [Sudo, Wikipedia](https://zh.wikipedia.org/wiki/Sudo) +1. [NOIP 标准评测系统及相关问题,smart0326, 2014-05-19, 百度文库](https://wenku.baidu.com/view/8246d96cdd36a32d72758143.html) +2. [WSL, 百度百科](https://baike.baidu.com/item/wsl/20359185) +3. [Run Bash on Ubuntu on Windows, Mike Harsh, 2016-05-30, Windows Blog](https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/#cie8WdR3uSjgR5Ru.97) +4. [Windows Subsystem for Linux Documentation, MSDN](https://docs.microsoft.com/zh-cn/windows/wsl/about) +5. [NOI 系列活动标准竞赛环境,2016-11-08, NOI 官网](http://www.noi.cn/2016-11-08-03-42-01) +6. [购买 Ubuntu, Microsoft Store](https://www.microsoft.com/zh-cn/p/ubuntu/9nblggh4msv6) +7. [Ubuntu 镜像使用帮助,清华 TUNA](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/) +8. [Ubuntu 的 man 命令帮助如何设置中文版,Frank 看庐山,2017-06-09](https://blog.csdn.net/qq_14989227/article/details/72954523) +9. [Xming X Server for Windows, SourceForge](https://sourceforge.net/projects/xming/) +10. [Sudo, Wikipedia](https://zh.wikipedia.org/wiki/Sudo) ## 延伸内容 -- [Dev on Windows with WSL(在 Windows 上用 WSL 优雅开发)](https://spencerwoo.com/dowww/) +- [Dev on Windows with WSL(在 Windows 上用 WSL 优雅开发)](https://spencerwoo.com/dowww/) -- [Github 上的 Awesome-WSL](https://github.com/sirredbeard/Awesome-WSL) +- [Github 上的 Awesome-WSL](https://github.com/sirredbeard/Awesome-WSL) ### 后记 -本文最初发布于[洛谷日报 #6](https://www.luogu.org/discuss/show/48491),现由原作者搬运至此,有删改。 +本文最初发布于 [洛谷日报 #6](https://www.luogu.org/discuss/show/48491) ,现由原作者搬运至此,有删改。 diff --git a/docs/lang/csl/bitset.md b/docs/lang/csl/bitset.md index 5ed7c884..701bedb3 100644 --- a/docs/lang/csl/bitset.md +++ b/docs/lang/csl/bitset.md @@ -83,7 +83,7 @@ bitset<1000> bs; // a bitset with 1000 bits ## 应用 -### [LibreOJ β Round #2」贪心只能过样例](https://loj.ac/problem/515) +### [LibreOJ β Round #2」贪心只能过样例](https://loj.ac/problem/515) 这题可以用 dp 做,转移方程很简单: @@ -91,13 +91,13 @@ bitset<1000> bs; // a bitset with 1000 bits 但如果直接做的话是 $O(n^5)$ 的,(看起来)过不了。 -发现可以用 `bitset` 优化,左移再或起来就好了:[std::bitset](https://loj.ac/submission/395274) +发现可以用 `bitset` 优化,左移再或起来就好了: [std::bitset](https://loj.ac/submission/395274) -然后发现……被加了几个剪枝的暴力艹了:[加了几个剪枝的暴力](https://loj.ac/submission/395673) +然后发现……被加了几个剪枝的暴力艹了: [加了几个剪枝的暴力](https://loj.ac/submission/395673) -然而,可以手写 `bitset` (只需要支持左移后或起来这一种操作)压 $64$ 位( `unsigned long long` )来艹掉暴力:[手写 bitset](https://loj.ac/submission/395619) +然而,可以手写 `bitset` (只需要支持左移后或起来这一种操作)压 $64$ 位( `unsigned long long` )来艹掉暴力: [手写 bitset](https://loj.ac/submission/395619) -### [CF1097F Alex and a TV Show](https://codeforces.com/contest/1097/problem/F) +### [CF1097F Alex and a TV Show](https://codeforces.com/contest/1097/problem/F) #### 题意 @@ -122,7 +122,7 @@ bitset<1000> bs; // a bitset with 1000 bits 现在的问题是,如何通过一个可重集的约数构成的可重集得到该可重集中某个数的个数。 -令原可重集为 $A$ ,其约数构成的可重集为 $A'$ ,我们要求 $A$ 中 $x$ 的个数,用[莫比乌斯反演](/math/mobius/)推一推: +令原可重集为 $A$ ,其约数构成的可重集为 $A'$ ,我们要求 $A$ 中 $x$ 的个数,用 [莫比乌斯反演](/math/mobius/) 推一推: $$ \begin{aligned}&\sum\limits_{i\in A}[\frac i x=1]\\=&\sum\limits_{i\in A}\sum\limits_{d|\frac i x}\mu(d)\\=&\sum\limits_{d\in A',x|d}\mu(\frac d x)\end{aligned} @@ -215,8 +215,8 @@ $$ ### 与树分块结合 - `bitset` 与树分块结合可以解决一类求树上多条路径信息并的问题,详见[数据结构/树分块](/ds/tree-decompose/)。 + `bitset` 与树分块结合可以解决一类求树上多条路径信息并的问题,详见 [数据结构/树分块](/ds/tree-decompose/) 。 ### 计算高维偏序 -详见[FHR 课件](https://github.com/OI-wiki/libs/blob/master/lang/csl/FHR-分块bitset求高维偏序.pdf)。 +详见 [FHR 课件](https://github.com/OI-wiki/libs/blob/master/lang/csl/FHR-分块bitset求高维偏序.pdf) 。 diff --git a/docs/lang/helloworld.md b/docs/lang/helloworld.md index 727f4862..22df280f 100644 --- a/docs/lang/helloworld.md +++ b/docs/lang/helloworld.md @@ -6,13 +6,13 @@ disqus: ### 集成开发环境 -IDE 操作较为简单,一般入门玩家会选用 IDE 来编写代码。在竞赛中最常见的是 Dev-C++(如果考试环境是 Windows 系统,一般也会提供这一 IDE)。详情可以阅读[相关页面](/intro/editor/devcpp)。 +IDE 操作较为简单,一般入门玩家会选用 IDE 来编写代码。在竞赛中最常见的是 Dev-C++(如果考试环境是 Windows 系统,一般也会提供这一 IDE)。详情可以阅读 [相关页面](/intro/editor/devcpp) 。 ### 编译器 #### Windows -需要去[MinGW Distro](https://nuwen.net/mingw.html)下载 MinGW 并安装 +需要去 [MinGW Distro](https://nuwen.net/mingw.html) 下载 MinGW 并安装 #### macOS diff --git a/docs/lang/pb-ds/index.md b/docs/lang/pb-ds/index.md index 584ed64d..bf05ebb5 100644 --- a/docs/lang/pb-ds/index.md +++ b/docs/lang/pb-ds/index.md @@ -8,4 +8,4 @@ pb_ds 库封装了很多数据结构,比如哈希(Hash)表,平衡二叉 pb_ds 只在使用 libstdc++ 为标准库的编译器下可以用。 - **参考资料:[《C++ 的 pb_ds 库在 OI 中的应用》](https://github.com/OI-Wiki/libs/blob/master/lang/pb-ds/C%2B%2B的pb_ds库在OI中的应用.pdf)** + **参考资料: [《C++ 的 pb_ds 库在 OI 中的应用》](https://github.com/OI-Wiki/libs/blob/master/lang/pb-ds/C%2B%2B的pb_ds库在OI中的应用.pdf) ** diff --git a/docs/lang/pb-ds/pq.md b/docs/lang/pb-ds/pq.md index 60fe196b..7a9aac8c 100644 --- a/docs/lang/pb-ds/pq.md +++ b/docs/lang/pb-ds/pq.md @@ -2,7 +2,7 @@ author: Xeonacid, ouuan, Ir1d, WAAutoMaton, Chrogeek, abc1763613206, Planet6174, ## `__gnu_pbds :: priority_queue` -附:[官方文档地址——复杂度及常数测试](https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/pq_performance_tests.html#std_mod1) +附: [官方文档地址——复杂度及常数测试](https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/pq_performance_tests.html#std_mod1) ```cpp #include diff --git a/docs/math/bezouts.md b/docs/math/bezouts.md index 08c06e5a..d815a77b 100644 --- a/docs/math/bezouts.md +++ b/docs/math/bezouts.md @@ -67,4 +67,4 @@ 由于:互质即为最大公因数为 $1$ , $\gcd(0,x)=x$ 这两个定理,可以证明该算法的正确。选择优先队列优化 Dijkstra 求解。 -不过还有个问题,即为需要记录是否已经买过一个卡片,开数组标记由于数据范围达到 $10^9$ 会超出内存限制,可以想到使用 `unordered_map` (比普通的 `map` 更快地访问各个元素,迭代效率较低,详见[STL-map](/ds/stl/map/)) +不过还有个问题,即为需要记录是否已经买过一个卡片,开数组标记由于数据范围达到 $10^9$ 会超出内存限制,可以想到使用 `unordered_map` (比普通的 `map` 更快地访问各个元素,迭代效率较低,详见 [STL-map](/ds/stl/map/) ) diff --git a/docs/math/bignum.md b/docs/math/bignum.md index 9c03b577..db7990cc 100644 --- a/docs/math/bignum.md +++ b/docs/math/bignum.md @@ -637,17 +637,17 @@ $$ ``` ??? " 关于 `new` 和 `delete` " - 见[内存池](/intro/common-tricks/#_4)。 + 见 [内存池](/intro/common-tricks/#_4) 。 但是这样的实现存在一个问题:在 $b$ 进制下,多项式的每一个系数都有可能达到 $n \cdot b^2$ 量级,在压位高精度实现(即 $b > 10$ ,下文介绍)中可能造成整数溢出;而若在多项式乘法的过程中处理进位问题,则 $x_1 + x_0$ 与 $y_1 + y_0$ 的结果可能达到 $2 \cdot b^m$ ,增加一个位(如果采用 $x_1 - x_0$ 的计算方式,则不得不特殊处理负数的情况)。因此,需要依照实际的应用场景来决定采用何种实现方式。 ### Reference - + ## 封装类 -[这里](https://paste.ubuntu.com/p/7VKYzpC7dn/)有一个封装好的高精度整数类。 + [这里](https://paste.ubuntu.com/p/7VKYzpC7dn/) 有一个封装好的高精度整数类。 ??? 这里是另一个模板 ```cpp @@ -861,9 +861,9 @@ $$ ## 习题 -- [NOIP 2012 国王游戏](https://www.luogu.org/problemnew/show/P1080) -- [SPOJ - Fast Multiplication](http://www.spoj.com/problems/MUL/en/) -- [SPOJ - GCD2](http://www.spoj.com/problems/GCD2/) -- [UVA - Division](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1024) -- [UVA - Fibonacci Freeze](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=436) -- [Codeforces - Notepad](http://codeforces.com/contest/17/problem/D) +- [NOIP 2012 国王游戏](https://www.luogu.org/problemnew/show/P1080) +- [SPOJ - Fast Multiplication](http://www.spoj.com/problems/MUL/en/) +- [SPOJ - GCD2](http://www.spoj.com/problems/GCD2/) +- [UVA - Division](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1024) +- [UVA - Fibonacci Freeze](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=436) +- [Codeforces - Notepad](http://codeforces.com/contest/17/problem/D) diff --git a/docs/math/bit.md b/docs/math/bit.md index 95c7f7c9..88310fa2 100644 --- a/docs/math/bit.md +++ b/docs/math/bit.md @@ -239,8 +239,8 @@ void swap(int &a, int &b) { ## 题目推荐 -[CODEVS 2743 黑白棋游戏](http://codevs.cn/problem/2743/) + [CODEVS 2743 黑白棋游戏](http://codevs.cn/problem/2743/) ## 参考 -位运算技巧: +位运算技巧: diff --git a/docs/math/bsgs.md b/docs/math/bsgs.md index 305cadac..909cc9a5 100644 --- a/docs/math/bsgs.md +++ b/docs/math/bsgs.md @@ -26,7 +26,7 @@ $$ 其中 $p$ 是个质数。 -该模型可以通过一系列的转化为成 **基础篇** 中的模型,你可能需要了解关于[阶与原根](/math/primitive-root/)的知识。 +该模型可以通过一系列的转化为成 **基础篇** 中的模型,你可能需要了解关于 [阶与原根](/math/primitive-root/) 的知识。 由于式子中的模数 $p$ 是一个质数,那么 $p$ 一定存在一个原根 $g$ 。因此对于模 $p$ 意义下的任意的数 $x\ (0\le x diff --git a/docs/math/euler.md b/docs/math/euler.md index f628ab1b..25faf33b 100644 --- a/docs/math/euler.md +++ b/docs/math/euler.md @@ -18,7 +18,7 @@ - $n = \sum_{d | n}{\varphi(d)}$ - 利用[莫比乌斯反演](/math/mobius/)相关知识可以得出。 + 利用 [莫比乌斯反演](/math/mobius/) 相关知识可以得出。 也可以这样考虑:如果 $\gcd(k, n) = d$ ,那么 $\gcd(\frac{k}{d},\frac{n}{d}) = 1$ 。( $k < n$ ) @@ -48,7 +48,7 @@ int euler_phi(int n) { ``` 如果是多个数的欧拉函数值,可以利用后面会提到的线性筛法来求得。 -详见:[筛法求欧拉函数](/math/sieve#_2) +详见: [筛法求欧拉函数](/math/sieve#_2) ## 欧拉定理 @@ -70,4 +70,4 @@ a^{b\bmod\varphi(p)+\varphi(p)},&\gcd(a,\,p)\ne1,\,b\ge\varphi(p) \pmod p $$ -证明和 **习题** 详见[欧拉定理](/math/fermat/) +证明和 **习题** 详见 [欧拉定理](/math/fermat/) diff --git a/docs/math/expectation.md b/docs/math/expectation.md index f92a82dd..84855522 100644 --- a/docs/math/expectation.md +++ b/docs/math/expectation.md @@ -50,6 +50,6 @@ ## 例题 -[NOIP2017 初赛 T14, T15](https://ti.luogu.com.cn/problemset/1022) + [NOIP2017 初赛 T14, T15](https://ti.luogu.com.cn/problemset/1022) -[NOIP2016 换教室](https://www.luogu.org/problemnew/show/P1850)(概率期望 DP) + [NOIP2016 换教室](https://www.luogu.org/problemnew/show/P1850) (概率期望 DP) diff --git a/docs/math/fermat.md b/docs/math/fermat.md index e8fbb40f..88ff495a 100644 --- a/docs/math/fermat.md +++ b/docs/math/fermat.md @@ -6,7 +6,7 @@ ## 欧拉定理 -在了解欧拉定理(Euler's theorem)之前,请先了解[欧拉函数](/math/euler/)。定理内容如下: +在了解欧拉定理(Euler's theorem)之前,请先了解 [欧拉函数](/math/euler/) 。定理内容如下: 若 $\gcd(a, m) = 1$ ,则 $a^{\varphi(m)} \equiv 1 \pmod{m}$ 。 @@ -30,7 +30,7 @@ $$ ### 证明 -证明转载自[synapse7](http://blog.csdn.net/synapse7/article/details/19610361) +证明转载自 [synapse7](http://blog.csdn.net/synapse7/article/details/19610361) 1. 在 $a$ 的 $0$ 次, $1$ 次,。。。, $b$ 次幂模 $m$ 的序列中,前 $r$ 个数( $a^0$ 到 $a^{r-1}$ ) 互不相同,从第 $r$ 个数开始,每 $s$ 个数就循环一次。 @@ -78,8 +78,8 @@ $$ ## 习题 -1. [SPOJ #4141 "Euler Totient Function"\[Difficulty: CakeWalk\]](http://www.spoj.com/problems/ETF/) -2. [UVA #10179 "Irreducible Basic Fractions"\[Difficulty: Easy\]](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1120) -3. [UVA #10299 "Relatives"\[Difficulty: Easy\]](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1240) -4. [UVA #11327 "Enumerating Rational Numbers"\[Difficulty: Medium\]](http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2302) -5. [TIMUS #1673 "Admission to Exam"\[Difficulty: High\]](http://acm.timus.ru/problem.aspx?space=1&num=1673) +1. [SPOJ #4141 "Euler Totient Function"\[Difficulty: CakeWalk\]](http://www.spoj.com/problems/ETF/) +2. [UVA #10179 "Irreducible Basic Fractions"\[Difficulty: Easy\]](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1120) +3. [UVA #10299 "Relatives"\[Difficulty: Easy\]](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1240) +4. [UVA #11327 "Enumerating Rational Numbers"\[Difficulty: Medium\]](http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2302) +5. [TIMUS #1673 "Admission to Exam"\[Difficulty: High\]](http://acm.timus.ru/problem.aspx?space=1&num=1673) diff --git a/docs/math/fibonacci.md b/docs/math/fibonacci.md index 7f37b450..b2004375 100644 --- a/docs/math/fibonacci.md +++ b/docs/math/fibonacci.md @@ -1,4 +1,4 @@ -斐波那契数列(The Fibonacci sequence,[OEIS A000045](http://oeis.org/A000045))的定义如下: +斐波那契数列(The Fibonacci sequence, [OEIS A000045](http://oeis.org/A000045) )的定义如下: $$ F_0 = 0, F_1 = 1, F_n = F_{n-1} + F_{n-2} @@ -20,11 +20,11 @@ $$ 4. 由上一条性质可以归纳证明, $\forall k\in \mathbb{N},F_n|F_{nk}$ 。 5. 上述性质可逆,即 $\forall F_a|F_b,a|b$ 。 6. GCD 性质: $(F_m, F_n) = F_{(m, n)}$ 。 -7. 以斐波那契数列相邻两项作为输入会使欧几里德算法达到最坏复杂度(具体参见[维基 - 拉梅](https://en.wikipedia.org/wiki/Gabriel_Lam%C3%A9))。 +7. 以斐波那契数列相邻两项作为输入会使欧几里德算法达到最坏复杂度(具体参见 [维基 - 拉梅](https://en.wikipedia.org/wiki/Gabriel_Lam%C3%A9) )。 ## 斐波那契编码 -我们可以利用斐波那契数列为正整数编码。根据[齐肯多夫定理](https://zh.wikipedia.org/wiki/%E9%BD%8A%E8%82%AF%E5%A4%9A%E5%A4%AB%E5%AE%9A%E7%90%86),任何自然数 $n$ 可以被唯一地表示成一些斐波那契数的和: +我们可以利用斐波那契数列为正整数编码。根据 [齐肯多夫定理](https://zh.wikipedia.org/wiki/%E9%BD%8A%E8%82%AF%E5%A4%9A%E5%A4%AB%E5%AE%9A%E7%90%86) ,任何自然数 $n$ 可以被唯一地表示成一些斐波那契数的和: $$ N = F_{k_1} + F_{k_2} + \ldots + F_{k_r} @@ -130,13 +130,13 @@ $$ $p$ 的剩余系大小为 $p$ ,意味着在前 $p^2+1$ 个数对中必有两个相同的数对,于是这两个数对可以往后生成相同的斐波那契数列,那么他们就是周期性的。 -事实上,我们有一个远比它要强的结论。模 $n$ 意义下斐波那契数列的周期被称为[皮萨诺周期](https://en.wikipedia.org/wiki/Pisano_period)([OEIS A001175](http://oeis.org/A001175)),该数可以证明总是不超过 $6n$ ,且只有在满足 $n=2\times 5^k$ 的形式时才取到等号。 +事实上,我们有一个远比它要强的结论。模 $n$ 意义下斐波那契数列的周期被称为 [皮萨诺周期](https://en.wikipedia.org/wiki/Pisano_period) ( [OEIS A001175](http://oeis.org/A001175) ),该数可以证明总是不超过 $6n$ ,且只有在满足 $n=2\times 5^k$ 的形式时才取到等号。 ## 习题 -- [SPOJ - Euclid Algorithm Revisited](http://www.spoj.com/problems/MAIN74/) -- [SPOJ - Fibonacci Sum](http://www.spoj.com/problems/FIBOSUM/) -- [HackerRank - Is Fibo](https://www.hackerrank.com/contests/codesprint5/challenges/is-fibo/problem) -- [Project Euler - Even Fibonacci numbers](https://www.hackerrank.com/contests/projecteuler/challenges/euler002/problem) +- [SPOJ - Euclid Algorithm Revisited](http://www.spoj.com/problems/MAIN74/) +- [SPOJ - Fibonacci Sum](http://www.spoj.com/problems/FIBOSUM/) +- [HackerRank - Is Fibo](https://www.hackerrank.com/contests/codesprint5/challenges/is-fibo/problem) +- [Project Euler - Even Fibonacci numbers](https://www.hackerrank.com/contests/projecteuler/challenges/euler002/problem) - **本页面主要译自博文[Числа Фибоначчи](http://e-maxx.ru/algo/fibonacci_numbers)与其英文翻译版[Fibonacci Numbers](https://cp-algorithms.com/algebra/fibonacci-numbers.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Числа Фибоначчи](http://e-maxx.ru/algo/fibonacci_numbers) 与其英文翻译版 [Fibonacci Numbers](https://cp-algorithms.com/algebra/fibonacci-numbers.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/math/game-theory.md b/docs/math/game-theory.md index 9914d26e..6a6ab55b 100644 --- a/docs/math/game-theory.md +++ b/docs/math/game-theory.md @@ -114,6 +114,6 @@ $$ ## 参考文献 -[(转载)Nim 游戏博弈(收集完全版)- exponent - 博客园](http://www.cnblogs.com/exponent/articles/2141477.html) + [(转载)Nim 游戏博弈(收集完全版)- exponent - 博客园](http://www.cnblogs.com/exponent/articles/2141477.html) -[\[组合游戏与博弈论\]【学习笔记】- Candy? - 博客园](https://www.cnblogs.com/candy99/p/6548836.html) + [\[组合游戏与博弈论\]【学习笔记】- Candy? - 博客园](https://www.cnblogs.com/candy99/p/6548836.html) diff --git a/docs/math/gauss.md b/docs/math/gauss.md index ec77cd6b..6999494c 100644 --- a/docs/math/gauss.md +++ b/docs/math/gauss.md @@ -255,7 +255,7 @@ $$ 一个无向图的生成树个数为邻接矩阵度数矩阵去一行一列的行列式。 -详见:[矩阵树定理](/graph/matrix-tree/) +详见: [矩阵树定理](/graph/matrix-tree/) 例如,一个正方形图的生成树个数 diff --git a/docs/math/gcd.md b/docs/math/gcd.md index ed0a8878..39c8c216 100644 --- a/docs/math/gcd.md +++ b/docs/math/gcd.md @@ -2,7 +2,7 @@ 最大公约数即为 Greatest Common Divisor,常缩写为 gcd。 -在[素数](/math/prime)一节中,我们已经介绍了约数的概念。 +在 [素数](/math/prime) 一节中,我们已经介绍了约数的概念。 一组数的公约数,是指同时是这组数中每一个数的约数的数。而最大公约数,则是指所有公约数里面最大的一个。 diff --git a/docs/math/inclusion-exclusion-principle.md b/docs/math/inclusion-exclusion-principle.md index d26bc017..b447d280 100644 --- a/docs/math/inclusion-exclusion-principle.md +++ b/docs/math/inclusion-exclusion-principle.md @@ -384,4 +384,4 @@ $$ 王迪《容斥原理》,2013 年信息学奥林匹克中国国家队候选队员论文集 -[Cyhlnj《有标号的 DAG 计数系列问题》](https://blog.csdn.net/oi_konnyaku/article/details/84862271) + [Cyhlnj《有标号的 DAG 计数系列问题》](https://blog.csdn.net/oi_konnyaku/article/details/84862271) diff --git a/docs/math/inverse.md b/docs/math/inverse.md index 1180f913..eb7c895c 100644 --- a/docs/math/inverse.md +++ b/docs/math/inverse.md @@ -19,11 +19,11 @@ void exgcd(int a, int b, int& x, int& y) { } ``` -扩展欧几里得法和求解[线性同余方程](/math/linear-equation/)是一个原理,在这里不展开解释。 +扩展欧几里得法和求解 [线性同余方程](/math/linear-equation/) 是一个原理,在这里不展开解释。 ### 快速幂法 -这个要运用[费马小定理](/math/fermat/): +这个要运用 [费马小定理](/math/fermat/) : > 若 $p$ 为质数, $a$ 为正整数,且 $a$ 、 $p$ 互质,则 $a^{p-1} \equiv 1 \pmod p$ 。 @@ -89,7 +89,7 @@ for (int i = 2; i <= n; ++i) inv[i] = (long long)(p - p / i) * inv[p % i] % p; 中间优化可以加入一个记忆化来避免多次递归导致的重复,这样求 $1,2,...,n$ 中所有数的逆元的时间复杂度仍是 $O(n)$ 。 - **注意** :如果用以上给出的式子递归进行单个数的逆元求解,目前已知的时间复杂度的上界为 $O(n^{\frac 1 3})$ ,具体请看[知乎讨论](https://www.zhihu.com/question/59033693)。算法竞赛中更好地求单个数的逆元的方法有扩展欧几里得法和快速幂法。 + **注意** :如果用以上给出的式子递归进行单个数的逆元求解,目前已知的时间复杂度的上界为 $O(n^{\frac 1 3})$ ,具体请看 [知乎讨论](https://www.zhihu.com/question/59033693) 。算法竞赛中更好地求单个数的逆元的方法有扩展欧几里得法和快速幂法。 ### 线性求任意 n 个数的逆元 @@ -116,12 +116,12 @@ for (int i = 1; i <= n; ++i) inv[i] = sv[i] * s[i - 1] % p; ## 逆元练习题 -[【模板】乘法逆元](https://www.luogu.org/problemnew/show/P3811) + [【模板】乘法逆元](https://www.luogu.org/problemnew/show/P3811) -[乘法逆元 2](https://loj.ac/problem/152) + [乘法逆元 2](https://loj.ac/problem/152) -[同余方程](https://www.luogu.org/problemnew/show/P1082) + [同余方程](https://www.luogu.org/problemnew/show/P1082) -[\[AHOI2005\]洗牌](https://www.lydsy.com/JudgeOnline/problem.php?id=1965) + [\[AHOI2005\]洗牌](https://www.lydsy.com/JudgeOnline/problem.php?id=1965) -[\[SDOI2016\]排列计数](https://www.luogu.org/problemnew/show/P4071) + [\[SDOI2016\]排列计数](https://www.luogu.org/problemnew/show/P4071) diff --git a/docs/math/linear-equation.md b/docs/math/linear-equation.md index a02200d9..1af6050d 100644 --- a/docs/math/linear-equation.md +++ b/docs/math/linear-equation.md @@ -2,7 +2,7 @@ 形如 $ax \equiv b \pmod c$ 的方程被称为 **线性同余方程** (Congruence Equation)。 -[\[NOIp 2012\]同余方程](https://www.luogu.org/problemnew/show/P1082) + [\[NOIp 2012\]同余方程](https://www.luogu.org/problemnew/show/P1082) ## 求解方法 diff --git a/docs/math/linear-programming.md b/docs/math/linear-programming.md index 5ac7be0f..64b5d714 100644 --- a/docs/math/linear-programming.md +++ b/docs/math/linear-programming.md @@ -8,7 +8,7 @@ 一个问题要能转化为线性规划问题,首先需要有一个或多个线性约束条件,然后要求的目标函数也应该是线性的。那么,最容易也是最常用的描述方法就是标准型。 -我们以[《算法导论》](https://mitpress.ublish.com/ereader/1/?preview#page/Cover)中线性规划一节提出的问题为例: +我们以 [《算法导论》](https://mitpress.ublish.com/ereader/1/?preview#page/Cover) 中线性规划一节提出的问题为例: > 假如你是一位政治家,试图赢得一场选举,你的选区有三种:市区,郊区和乡村,这些选区分别有 100000、200000 和 50000 个选民,尽管并不是所有人都有足够的社会责任感去投票,你还是希望每个选区至少有半数选民投票以确保你可以当选 > diff --git a/docs/math/lucas.md b/docs/math/lucas.md index 59cb3adf..0f0e8fa8 100755 --- a/docs/math/lucas.md +++ b/docs/math/lucas.md @@ -1,6 +1,6 @@ ## Lucas 定理 -Lucas 定理用于求解大组合数取模的问题,其中 p 必须为素数。正常的组合数运算可以通过递推公式求解(详见[排列组合](/math/combination/)),但当问题规模很大,而模数是一个不大的质数的时候,就不能简单地通过递推求解来得到答案,需要用到 Lucas 定理。 +Lucas 定理用于求解大组合数取模的问题,其中 p 必须为素数。正常的组合数运算可以通过递推公式求解(详见 [排列组合](/math/combination/) ),但当问题规模很大,而模数是一个不大的质数的时候,就不能简单地通过递推求解来得到答案,需要用到 Lucas 定理。 ### 求解方式 @@ -143,6 +143,6 @@ LL exlucas(LL m, LL n, LL P) { ## 习题 -- [Luogu3807【模板】卢卡斯定理](https://www.luogu.org/problemnew/show/P3807) -- [SDOI2010 古代猪文 卢卡斯定理](https://www.luogu.org/problemnew/show/P2480) -- [Luogu4720【模板】扩展卢卡斯](https://www.luogu.org/problemnew/show/P4720) +- [Luogu3807【模板】卢卡斯定理](https://www.luogu.org/problemnew/show/P3807) +- [SDOI2010 古代猪文 卢卡斯定理](https://www.luogu.org/problemnew/show/P2480) +- [Luogu4720【模板】扩展卢卡斯](https://www.luogu.org/problemnew/show/P4720) diff --git a/docs/math/matrix.md b/docs/math/matrix.md index 591d4a92..20b59004 100644 --- a/docs/math/matrix.md +++ b/docs/math/matrix.md @@ -12,7 +12,7 @@ $A$ 的逆矩阵 $P$ 是使得 $A \times P = I$ 的矩阵。 -逆矩阵可以用[高斯消元](/math/gauss/)的方式来求。 +逆矩阵可以用 [高斯消元](/math/gauss/) 的方式来求。 ## 运算 @@ -34,7 +34,7 @@ $$ 矩阵乘法满足结合律,不满足一般的交换律。 -利用结合律,矩阵乘法可以利用[快速幂](/math/quick-pow/)的思想来优化。 +利用结合律,矩阵乘法可以利用 [快速幂](/math/quick-pow/) 的思想来优化。 在比赛中,由于线性递推式可以表示成矩阵乘法的形式,也通常用矩阵快速幂来求线性递推数列的某一项。 @@ -254,8 +254,8 @@ $$ ## 习题 -- [洛谷 P1962 斐波那契数列](https://www.luogu.org/problemnew/show/P1962),即上面的例题,同题 POJ3070 -- [洛谷 P1349 广义斐波那契数列](https://www.luogu.org/problemnew/show/P1349), $\text{base}$ 矩阵需要变化一下 -- [洛谷 P1939【模板】矩阵加速(数列)](https://www.luogu.org/problemnew/show/P1939), $\text{base}$ 矩阵变成了 $3 \times 3$ 的矩阵,推导过程与上面差不多。 +- [洛谷 P1962 斐波那契数列](https://www.luogu.org/problemnew/show/P1962) ,即上面的例题,同题 POJ3070 +- [洛谷 P1349 广义斐波那契数列](https://www.luogu.org/problemnew/show/P1349) , $\text{base}$ 矩阵需要变化一下 +- [洛谷 P1939【模板】矩阵加速(数列)](https://www.luogu.org/problemnew/show/P1939) , $\text{base}$ 矩阵变成了 $3 \times 3$ 的矩阵,推导过程与上面差不多。 - **本页面部分内容译自博文[Кратчайшие пути фиксированной длины, количества путей фиксированной длины](http://e-maxx.ru/algo/fixed_length_paths)与其英文翻译版[Number of paths of fixed length/Shortest paths of fixed length](https://cp-algorithms.com/graph/fixed_length_paths.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面部分内容译自博文 [Кратчайшие пути фиксированной длины, количества путей фиксированной длины](http://e-maxx.ru/algo/fixed_length_paths) 与其英文翻译版 [Number of paths of fixed length/Shortest paths of fixed length](https://cp-algorithms.com/graph/fixed_length_paths.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/math/min-25.md b/docs/math/min-25.md index 06f86969..0603a829 100644 --- a/docs/math/min-25.md +++ b/docs/math/min-25.md @@ -1,6 +1,6 @@ author: TrisolarisHD, Xeonacid -由于其由[Min_25](http://min-25.hatenablog.com/)发明并最早开始使用,故称「Min_25 筛」。 +由于其由 [Min_25](http://min-25.hatenablog.com/) 发明并最早开始使用,故称「Min_25 筛」。 > 从此种筛法的思想方法来说,其又被称为「Extended Eratosthenes Sieve」。 @@ -89,7 +89,7 @@ $$ $$ 对于空间复杂度,可以发现不论是 $F_{k}$ 还是 $F_{\mathrm{prime}}$ ,其均只在 $n / i$ 处取有效点值,共 $O(\sqrt{n})$ 个。 -则可以使用[杜教筛一节中介绍的 trick](#Implementation)来将空间复杂度优化至 $O(\sqrt{n})$ 。 +则可以使用 [杜教筛一节中介绍的 trick](#Implementation) 来将空间复杂度优化至 $O(\sqrt{n})$ 。 ## 有关代码实现 @@ -130,7 +130,7 @@ $$ 对于 $f(p)$ 的常数项 $(-1)$ ,有 $g(p) = -1, G_{0}(n) = \sum_{i = 2}^{n} g(i) = -n + 1$ 。 筛两次加起来即可得到 $F_{\mathrm{prime}}$ 的所有 $O(\sqrt{n})$ 个所需点值。 -### [「LOJ #6053」简单的函数](https://loj.ac/problem/6053) +### [「LOJ #6053」简单的函数](https://loj.ac/problem/6053) 给定 $f(n)$ : diff --git a/docs/math/mobius.md b/docs/math/mobius.md index 26882033..df8d9683 100644 --- a/docs/math/mobius.md +++ b/docs/math/mobius.md @@ -273,7 +273,7 @@ $$ ## 问题形式 -### [「HAOI 2011」Problem b](https://www.lydsy.com/JudgeOnline/problem.php?id=2301) +### [「HAOI 2011」Problem b](https://www.lydsy.com/JudgeOnline/problem.php?id=2301) 求值(多组数据) @@ -370,7 +370,7 @@ int main() { } ``` -### [「SPOJ 5971」LCMSUM](https://www.spoj.com/problems/LCMSUM/) +### [「SPOJ 5971」LCMSUM](https://www.spoj.com/problems/LCMSUM/) 求值(多组数据) @@ -451,7 +451,7 @@ int main() { } ``` -### [「BZOJ 2154」Crash 的数字表格](https://www.lydsy.com/JudgeOnline/problem.php?id=2154) +### [「BZOJ 2154」Crash 的数字表格](https://www.lydsy.com/JudgeOnline/problem.php?id=2154) 求值(对 $20101009$ 取模) @@ -583,7 +583,7 @@ int main() { } ``` -### [「SDOI2015」约数个数和](https://www.luogu.org/problemnew/show/P3327) +### [「SDOI2015」约数个数和](https://www.luogu.org/problemnew/show/P3327) 多组数据,求 @@ -680,7 +680,7 @@ signed main() { } ``` -### [「luogu 3768」简单的数学题](https://www.luogu.org/problemnew/show/P3768) +### [「luogu 3768」简单的数学题](https://www.luogu.org/problemnew/show/P3768) 求 @@ -722,7 +722,7 @@ $$ \end{split} $$ -杜教筛(见[杜教筛 - 例 3](https://sshwy.gitee.io/2019/01/11/5071/))完了是这样的 +杜教筛(见 [杜教筛 - 例 3](https://sshwy.gitee.io/2019/01/11/5071/) )完了是这样的 $$ S(n)=\left(\frac{1}{2}n(n+1)\right)^2-\sum_{i=2}^ni^2S\left(\left\lfloor\frac{n}{i}\right\rfloor\right)\\ @@ -895,4 +895,4 @@ $$ 总时间复杂度 $O(n+\sqrt n)$ -> 本文部分内容引用于[algocode 算法博客](https://algocode.net),特别鸣谢! +> 本文部分内容引用于 [algocode 算法博客](https://algocode.net) ,特别鸣谢! diff --git a/docs/math/newton.md b/docs/math/newton.md index 02fca92b..ebe4ca11 100644 --- a/docs/math/newton.md +++ b/docs/math/newton.md @@ -84,6 +84,6 @@ public static BigInteger isqrtNewton(BigInteger n) { ## 习题 -- [UVa 10428 - The Roots](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=16&page=show_problem&problem=1369) +- [UVa 10428 - The Roots](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=16&page=show_problem&problem=1369) - **本页面主要译自博文[Метод Ньютона (касательных) для поиска корней](http://e-maxx.ru/algo/roots_newton)与其英文翻译版[Newton's method for finding roots](https://cp-algorithms.com/num_methods/roots_newton.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Метод Ньютона (касательных) для поиска корней](http://e-maxx.ru/algo/roots_newton) 与其英文翻译版 [Newton's method for finding roots](https://cp-algorithms.com/num_methods/roots_newton.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/math/poly/div-mod.md b/docs/math/poly/div-mod.md index 762e68f7..36178d6a 100644 --- a/docs/math/poly/div-mod.md +++ b/docs/math/poly/div-mod.md @@ -4,7 +4,7 @@ ## Method -发现若能消除 $R\left(x\right)$ 的影响则可直接[ **多项式求逆** ](../poly-inv)解决。 +发现若能消除 $R\left(x\right)$ 的影响则可直接 [ **多项式求逆** ](../poly-inv) 解决。 考虑构造变换 diff --git a/docs/math/poly/fft.md b/docs/math/poly/fft.md index ef81c42f..e658332d 100644 --- a/docs/math/poly/fft.md +++ b/docs/math/poly/fft.md @@ -1,16 +1,16 @@ author: AndrewWayne, GavinZhengOI. ChungZH, henryrabbit, Xeonacid, sshwy, Yukimaikoriya -(本页面部分内容转载自[桃酱的算法笔记](https://zhuanlan.zhihu.com/c_1005817911142838272),原文戳[链接](https://zhuanlan.zhihu.com/p/41867199),已获得作者授权) +(本页面部分内容转载自 [桃酱的算法笔记](https://zhuanlan.zhihu.com/c_1005817911142838272) ,原文戳 [链接](https://zhuanlan.zhihu.com/p/41867199) ,已获得作者授权) 一直想学 FFT,之前牛客的多校有一道组合数学就用 FFT 写的,而且当时还傻乎乎的用唯一分解定理,但是自己好久没静下心学什么了,而且自己的数学功底又不好,导致一直学不会。看了很多人的博客也没看明白,尤其是原根。在我看了几十篇博客之后终于看懂了……所以想写一篇能够让大多数人都看得懂的教程。花费时间 3 天终于写完啦~~~~\~~ 另外,本文 FFT 部分的代码实现全部参考 kuangbin 的模板(2018.7 更新)资源地址如下 - + NTT 部分代码参考 CSDN 上的模板代码附网址,感谢博主! -你搜索这个关键词就已经知道这一是个数学的东西了。只想学会用很简单,但是这远远不够。所以在看这个博客之前应该先学一下[复数](/math/complex)的基本知识。 +你搜索这个关键词就已经知道这一是个数学的东西了。只想学会用很简单,但是这远远不够。所以在看这个博客之前应该先学一下 [复数](/math/complex) 的基本知识。 好了下面进入正文。 @@ -405,7 +405,7 @@ void fft(Complex y[], int len, int on) { } ``` -好了现在附上全部代码([HDU 1402](http://acm.hdu.edu.cn/showproblem.php?pid=1402)),序言说过代码来自 kuangbin 的模板~~~~~ +好了现在附上全部代码( [HDU 1402](http://acm.hdu.edu.cn/showproblem.php?pid=1402) ),序言说过代码来自 kuangbin 的模板~~~~~ ??? "FFT" ```cpp @@ -518,4 +518,4 @@ void fft(Complex y[], int len, int on) { ## 算竞选手看过来~ NTT(数论优化的快速傅里叶变换) -戳~[NTT](/math/poly/ntt) +戳~ [NTT](/math/poly/ntt) diff --git a/docs/math/poly/fwt.md b/docs/math/poly/fwt.md index 096e5177..3bcba1a0 100644 --- a/docs/math/poly/fwt.md +++ b/docs/math/poly/fwt.md @@ -1,10 +1,10 @@ author: Xeonacid -(本文转载自[桃酱的算法笔记](https://zhuanlan.zhihu.com/c_1005817911142838272),原文戳[链接](https://zhuanlan.zhihu.com/p/41867199),已获得作者授权) +(本文转载自 [桃酱的算法笔记](https://zhuanlan.zhihu.com/c_1005817911142838272) ,原文戳 [链接](https://zhuanlan.zhihu.com/p/41867199) ,已获得作者授权) ## 简介 -> 沃尔什转换(Walsh Transform)是在频谱分析上作为离散傅立叶变换的替代方案的一种方法。——[维基百科](https://zh.wikipedia.org/zh-cn/%E6%B2%83%E7%88%BE%E4%BB%80%E8%BD%89%E6%8F%9B) +> 沃尔什转换(Walsh Transform)是在频谱分析上作为离散傅立叶变换的替代方案的一种方法。—— [维基百科](https://zh.wikipedia.org/zh-cn/%E6%B2%83%E7%88%BE%E4%BB%80%E8%BD%89%E6%8F%9B) 其实这个变换在信号处理中应用很广泛,fft 是 double 类型的,但是 walsh 把信号在不同震荡频率方波下拆解,因此所有的系数都是绝对值大小相同的整数,这使得不需要作浮点数的乘法运算,提高了运算速度。 diff --git a/docs/math/poly/intro.md b/docs/math/poly/intro.md index df5035e3..2df4de74 100644 --- a/docs/math/poly/intro.md +++ b/docs/math/poly/intro.md @@ -74,5 +74,5 @@ $$ ## References -- [ **Picks's Blog** ](https://picks.logdown.com) -- [ **Miskcoo's Space** ](https://blog.miskcoo.com) +- [ **Picks's Blog** ](https://picks.logdown.com) +- [ **Miskcoo's Space** ](https://blog.miskcoo.com) diff --git a/docs/math/poly/inv.md b/docs/math/poly/inv.md index 6a694e9c..cc86c9fe 100644 --- a/docs/math/poly/inv.md +++ b/docs/math/poly/inv.md @@ -45,7 +45,7 @@ $$ ### Newton's Method -参见[ **Newton's Method** ](/math/poly/newton/#newtons-method). +参见 [ **Newton's Method** ](/math/poly/newton/#newtons-method) . ## Code @@ -81,4 +81,4 @@ $$ ## Examples -1. 有标号简单无向连通图计数:[「POJ 1737」Connected Graph](http://poj.org/problem?id=1737) +1. 有标号简单无向连通图计数: [「POJ 1737」Connected Graph](http://poj.org/problem?id=1737) diff --git a/docs/math/poly/lagrange.md b/docs/math/poly/lagrange.md index db94422c..3e150512 100644 --- a/docs/math/poly/lagrange.md +++ b/docs/math/poly/lagrange.md @@ -23,7 +23,7 @@ author: Ir1d, TrisolarisHD, YanWQ-monad 使用 **待定系数法** 。设 $f(x)=\sum_{i=0}^{n-1} a_ix^i$ 将每个 $x_i$ 代入 $f(x)$ ,有 $f(x_i)=y_i$ ,这样就可以得到一个由 $n$ 条 $n$ 元 $1$ 次方程所组成的方程组,然后使用 **高斯消元** 求出每一项 $a_i$ ,然后将 $k$ 代入求值。 -如果您不知道什么是高斯消元,请看[Luogu P3389 高斯消元法](https://www.luogu.org/problemnew/show/P3389)。 +如果您不知道什么是高斯消元,请看 [Luogu P3389 高斯消元法](https://www.luogu.org/problemnew/show/P3389) 。 时间复杂度 $O(n^3)$ ,对给出点的坐标无要求。 diff --git a/docs/math/poly/ln-exp.md b/docs/math/poly/ln-exp.md index dea97fcb..5cfac5c2 100644 --- a/docs/math/poly/ln-exp.md +++ b/docs/math/poly/ln-exp.md @@ -8,7 +8,7 @@ * * * -首先,对于多项式 $f\left(x\right)$ ,若 $\ln{f\left(x\right)}$ 存在,则由其[定义](../#ln-exp),其必须满足: +首先,对于多项式 $f\left(x\right)$ ,若 $\ln{f\left(x\right)}$ 存在,则由其 [定义](../#ln-exp) ,其必须满足: $$ \left[x^{0}\right]f\left(x\right)=1 @@ -59,7 +59,7 @@ $$ ### Newton's Method -使用[ **Newton's Method** ](/math/poly/newton/#newtons-method)即可在 $O\left(n\log{n}\right)$ 的时间复杂度内解决多项式 $\exp$ 。 +使用 [ **Newton's Method** ](/math/poly/newton/#newtons-method) 即可在 $O\left(n\log{n}\right)$ 的时间复杂度内解决多项式 $\exp$ 。 ## Code diff --git a/docs/math/poly/newton.md b/docs/math/poly/newton.md index 590c449b..bddfb594 100644 --- a/docs/math/poly/newton.md +++ b/docs/math/poly/newton.md @@ -40,7 +40,7 @@ $$ ## Examples -### [多项式求逆](../poly-inv) +### [多项式求逆](../poly-inv) 设给定函数为 $h\left(x\right)$ ,有方程: @@ -63,7 +63,7 @@ $$ T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) $$ -### [多项式开方](../poly-sqrt) +### [多项式开方](../poly-sqrt) 设给定函数为 $h\left(x\right)$ ,有方程: @@ -86,7 +86,7 @@ $$ T\left(n\right)=T\left(\frac{n}{2}\right)+O\left(n\log{n}\right)=O\left(n\log{n}\right) $$ -### [多项式 exp](../poly-exp) +### [多项式 exp](../poly-exp) 设给定函数为 $h\left(x\right)$ ,有方程: diff --git a/docs/math/poly/ntt.md b/docs/math/poly/ntt.md index b4b507df..f39f3d05 100644 --- a/docs/math/poly/ntt.md +++ b/docs/math/poly/ntt.md @@ -1,6 +1,6 @@ author: ChungZH, Yukimaikoriya -(本文转载自[桃酱的算法笔记](https://zhuanlan.zhihu.com/c_1005817911142838272),原文戳[链接](https://zhuanlan.zhihu.com/p/41867199),已获得作者授权) +(本文转载自 [桃酱的算法笔记](https://zhuanlan.zhihu.com/c_1005817911142838272) ,原文戳 [链接](https://zhuanlan.zhihu.com/p/41867199) ,已获得作者授权) ## 简介 @@ -24,7 +24,7 @@ NTT 解决的是多项式乘法带模数的情况,可以说有些受模数的 阶就是满足 $a^r \equiv 1 \pmod n$ 的最小的 $r$ , $\operatorname{ord}(a)=r$ -### [原根](/math/primitive-root) +### [原根](/math/primitive-root) $g$ 满足 $\operatorname{ord}_n(g)=\left|Z_n^\times\right|=\varphi(n)$ ,对于质数 $p$ ,也就是说 $g^i \bmod p, 0 \leq i < p$ 结果互不相同。 @@ -61,7 +61,7 @@ $$ 接下来放一个大数相乘的模板 -参考网址如下 +参考网址如下 ```cpp #include diff --git a/docs/math/poly/sqrt.md b/docs/math/poly/sqrt.md index 425dfa29..ffada110 100644 --- a/docs/math/poly/sqrt.md +++ b/docs/math/poly/sqrt.md @@ -38,8 +38,8 @@ $$ ### Newton's Method -参见[ **Newton's Method** ](/math/poly/newton/#newtons-method). +参见 [ **Newton's Method** ](/math/poly/newton/#newtons-method) . ## Examples -1. [ **「Codeforces Round #250」E. The Child and Binary Tree** ](https://codeforces.com/contest/438/problem/E) +1. [ **「Codeforces Round #250」E. The Child and Binary Tree** ](https://codeforces.com/contest/438/problem/E) diff --git a/docs/math/poly/tri-func.md b/docs/math/poly/tri-func.md index 835c3989..d07f8ad5 100644 --- a/docs/math/poly/tri-func.md +++ b/docs/math/poly/tri-func.md @@ -4,7 +4,7 @@ ## Method -首先由[Euler's formula](https://en.wikipedia.org/wiki/Euler's_formula) $\left(e^{ix} = \cos{x} + i\sin{x}\right)$ 可以得到[三角函数的另一个表达式](https://en.wikipedia.org/wiki/Trigonometric_functions#Relationship_to_exponential_function_and_complex_numbers): +首先由 [Euler's formula](https://en.wikipedia.org/wiki/Euler's_formula) $\left(e^{ix} = \cos{x} + i\sin{x}\right)$ 可以得到 [三角函数的另一个表达式](https://en.wikipedia.org/wiki/Trigonometric_functions#Relationship_to_exponential_function_and_complex_numbers) : $$ \begin{aligned} diff --git a/docs/math/prime.md b/docs/math/prime.md index e1499109..13ec7bcb 100644 --- a/docs/math/prime.md +++ b/docs/math/prime.md @@ -41,11 +41,11 @@ bool isPrime(a) { ### Miller-Rabin 素性测试 Miller-Rabin 素性测试(Miller–Rabin primality test)是进阶的素数判定方法。 -对数 n 进行 k 轮测试的时间复杂度是 $O(k \log^3n)$ ,利用 FFT 等技术可以优化到[ $O(k \log^2n \log \log n \log \log \log n)$ ](https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test#Complexity)。 +对数 n 进行 k 轮测试的时间复杂度是 $O(k \log^3n)$ ,利用 FFT 等技术可以优化到 [ $O(k \log^2n \log \log n \log \log \log n)$ ](https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test#Complexity) 。 #### Fermat 素性测试 -我们可以根据[费马小定理](/math/fermat/#_1)得出一种检验素数的思路: +我们可以根据 [费马小定理](/math/fermat/#_1) 得出一种检验素数的思路: 它的基本思想是不断地选取在 $[2, n-1]$ 中的基 $a$ ,并检验是否每次都有 $a^{n-1} \equiv 1 \pmod n$ @@ -72,7 +72,7 @@ bool millerRabin(int n) { 比如, $561 = 3 \times 11 \times 17$ 就是一个卡迈克尔数。 -而且我们知道,若 $n$ 为卡迈克尔数,则 $m=2^{n}-1$ 也是一个卡迈克尔数,从而卡迈克尔数的个数是无穷的。[(OEIS:A006931)](https://oeis.org/A006931) +而且我们知道,若 $n$ 为卡迈克尔数,则 $m=2^{n}-1$ 也是一个卡迈克尔数,从而卡迈克尔数的个数是无穷的。 [(OEIS:A006931)](https://oeis.org/A006931) #### 二次探测定理 @@ -110,9 +110,9 @@ bool millerRabbin(int n) { ### 参考 - + - + ## 反素数 @@ -121,11 +121,11 @@ bool millerRabbin(int n) { 如果某个正整数 $n$ 满足如下条件,则称为是反素数: 任何小于 $n$ 的正数的约数个数都小于 $n$ 的约数个数 -注:注意区分[emirp](https://en.wikipedia.org/wiki/Emirp),它是用来表示从后向前写读是素数的数。 +注:注意区分 [emirp](https://en.wikipedia.org/wiki/Emirp) ,它是用来表示从后向前写读是素数的数。 ### 简介 -(本段转载自[桃酱的算法笔记](https://zhuanlan.zhihu.com/c_1005817911142838272),原文戳[链接](https://zhuanlan.zhihu.com/p/41759808),已获得作者授权) +(本段转载自 [桃酱的算法笔记](https://zhuanlan.zhihu.com/c_1005817911142838272) ,原文戳 [链接](https://zhuanlan.zhihu.com/p/41759808) ,已获得作者授权) 其实顾名思义,素数就是因子只有两个的数,那么反素数,就是因子最多的数(并且因子个数相同的时候值最小),所以反素数是相对于一个集合来说的。 @@ -177,7 +177,7 @@ bool millerRabbin(int n) { #### 求因子数一定的最小数 -题目链接: +题目链接: 对于这种题,我么只要以因子数为 dfs 的返回条件基准,不断更新找到的最小值就可以了 @@ -219,7 +219,7 @@ int main() { #### 求 n 以内因子数最多的数 - + 思路同上,只不过要改改 dfs 的返回条件。注意这样的题目的数据范围,我一开始用了 int,应该是溢出了,在循环里可能就出不来了就超时了。上代码,0ms 过。注释就没必要写了上面写的很清楚了。 diff --git a/docs/math/quick-pow.md b/docs/math/quick-pow.md index 9fd3d596..22c41768 100644 --- a/docs/math/quick-pow.md +++ b/docs/math/quick-pow.md @@ -78,7 +78,7 @@ long long binpow(long long a, long long b) { ``` ??? note "例题" - 做一做[Luogu P1226](https://www.luogu.org/problemnew/show/P1226) + 做一做 [Luogu P1226](https://www.luogu.org/problemnew/show/P1226) ## 应用 @@ -111,7 +111,7 @@ long long binpow(long long a, long long b, long long m) { ???+note "问题描述" 计算斐波那契数列第 $n$ 项 $F_n$ 。 -根据斐波那契数列的递推式 $F_n = F_{n-1} + F_{n-2}$ ,我们可以构建一个 $2\times 2$ 的矩阵来表示从 $F_i,F_{i+1}$ 到 $F_{i+1},F_{i+2}$ 的变换。于是在计算这个矩阵的 $n$ 次幂的时侯,我们使用快速幂的思想,可以在 $\Theta(\log n)$ 的时间内计算出结果。对于更多的细节参见[OI-wiki 斐波那契数列](/math/fibonacci/)。 +根据斐波那契数列的递推式 $F_n = F_{n-1} + F_{n-2}$ ,我们可以构建一个 $2\times 2$ 的矩阵来表示从 $F_i,F_{i+1}$ 到 $F_{i+1},F_{i+2}$ 的变换。于是在计算这个矩阵的 $n$ 次幂的时侯,我们使用快速幂的思想,可以在 $\Theta(\log n)$ 的时间内计算出结果。对于更多的细节参见 [OI-wiki 斐波那契数列](/math/fibonacci/) 。 ### 多次置换 @@ -206,7 +206,7 @@ $$ ???+note "问题描述" 给一个有向图(边权为 1),求任意两点 $u,v$ 间从 $u$ 到 $v$ ,长度为 $k$ 的路径的条数。 -我们把该图的邻接矩阵 M 取 k 次幂,那么 $M_{i,j}$ 就表示从 $i$ 到 $j$ 长度为 $k$ 的路径的数目。该算法的复杂度是 $O(n^3 \log_2 k)$ 。有关该算法的细节请参见[矩阵](/math/matrix/)页面。 +我们把该图的邻接矩阵 M 取 k 次幂,那么 $M_{i,j}$ 就表示从 $i$ 到 $j$ 长度为 $k$ 的路径的数目。该算法的复杂度是 $O(n^3 \log_2 k)$ 。有关该算法的细节请参见 [矩阵](/math/matrix/) 页面。 ### 模意义下大整数乘法 @@ -222,12 +222,12 @@ a \cdot b = \begin{cases} \end{cases} $$ -注意:你也可以利用双精度浮点数在常数时间内计算大整数乘法。因为 $a\times b\bmod m=a\times b-\left\lfloor\frac{a\times b}{m}\right\rfloor m$ 。由于 $a,b **Bland 规则** 可以参看:[最优化方法](https://github.com/AngelKitty/review_the_national_post-graduate_entrance_examination/blob/master/books_and_notes/professional_courses/data_structures_and_algorithms/sources/extra_books/%E6%9C%80%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95.pdf) +> **Bland 规则** 可以参看: [最优化方法](https://github.com/AngelKitty/review_the_national_post-graduate_entrance_examination/blob/master/books_and_notes/professional_courses/data_structures_and_algorithms/sources/extra_books/%E6%9C%80%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95.pdf) ### 初始化 @@ -665,14 +665,14 @@ $$ > 注: **任何最大流、最小费用最大流的线性规划都是全幺模矩阵** -更多详细的解释参看: +更多详细的解释参看: ## 习题练习 -- [UOJ#179. 线性规划](http://uoj.ac/problem/179) +- [UOJ#179. 线性规划](http://uoj.ac/problem/179) ## 参考资料 -- [线性规划之单纯形法【超详解 + 图解】](https://www.cnblogs.com/ECJTUACM-873284962/p/7097864.html) -- [2016 国家集训队论文](https://github.com/OI-wiki/libs/blob/master/%E9%9B%86%E8%AE%AD%E9%98%9F%E5%8E%86%E5%B9%B4%E8%AE%BA%E6%96%87/%E5%9B%BD%E5%AE%B6%E9%9B%86%E8%AE%AD%E9%98%9F2016%E8%AE%BA%E6%96%87%E9%9B%86.pdf) +- [线性规划之单纯形法【超详解 + 图解】](https://www.cnblogs.com/ECJTUACM-873284962/p/7097864.html) +- [2016 国家集训队论文](https://github.com/OI-wiki/libs/blob/master/%E9%9B%86%E8%AE%AD%E9%98%9F%E5%8E%86%E5%B9%B4%E8%AE%BA%E6%96%87/%E5%9B%BD%E5%AE%B6%E9%9B%86%E8%AE%AD%E9%98%9F2016%E8%AE%BA%E6%96%87%E9%9B%86.pdf) - 算法导论 diff --git a/docs/math/stirling.md b/docs/math/stirling.md index 0d612e43..2365e72c 100644 --- a/docs/math/stirling.md +++ b/docs/math/stirling.md @@ -6,7 +6,7 @@ $s(n, r)$ 也是把 $n$ 个不同的球排成 $r$ 个非空循环排列的方法数。 -关于第一类斯特林数的性质可以阅读[Stirling Number of the First Kind](http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html)。 +关于第一类斯特林数的性质可以阅读 [Stirling Number of the First Kind](http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html) 。 ### 递推形式 @@ -22,7 +22,7 @@ $$ 把 $n$ 个不同的球放到 $r$ 个相同的盒子里,假设没有空盒,则放球方案数记做 $S(n, r)$ ,称为第二类 Stirling 数。 -关于第二类斯特林数的性质可以阅读[Stirling Number of the Second Kind](http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html)。 +关于第二类斯特林数的性质可以阅读 [Stirling Number of the Second Kind](http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html) 。 ### 递推形式 @@ -70,4 +70,4 @@ $$ ## 习题 -[HDU3625](http://acm.hdu.edu.cn/showproblem.php?pid=3625) + [HDU3625](http://acm.hdu.edu.cn/showproblem.php?pid=3625) diff --git a/docs/misc/discrete.md b/docs/misc/discrete.md index 089f6632..79522709 100644 --- a/docs/misc/discrete.md +++ b/docs/misc/discrete.md @@ -2,7 +2,7 @@ author: GavinZhengOI ## 简介 -离散化本质上可以看成是一种[哈希](/string/hash),其保证数据在哈希以后仍然保持原来的全/偏序关系。 +离散化本质上可以看成是一种 [哈希](/string/hash) ,其保证数据在哈希以后仍然保持原来的全/偏序关系。 通俗地讲就是当有些数据因为本身很大或者类型不支持,自身无法作为数组的下标来方便地处理,而影响最终结果的只有元素之间的相对大小关系时,我们可以将原来的数据按照从大到小编号来处理问题,即离散化。 diff --git a/docs/misc/expression.md b/docs/misc/expression.md index 9935e00e..67e7f93e 100644 --- a/docs/misc/expression.md +++ b/docs/misc/expression.md @@ -10,7 +10,7 @@ author: Ir1d, Anguei, hsfzLZH1, siger-young, HeRaNO 递归的方法是把表达式拆分成如图所示的表达式树,然后在树结构上自底向上进行运算。![](./images/bet.png) -表达式树上进行[树的遍历](/graph/traverse/#dfs_3)可以得到不同类型的表达式 +表达式树上进行 [树的遍历](/graph/traverse/#dfs_3) 可以得到不同类型的表达式 - 前序遍历对应前缀表达式(波兰式) - 中序遍历对应中缀表达式 @@ -18,7 +18,7 @@ author: Ir1d, Anguei, hsfzLZH1, siger-young, HeRaNO ## 非递归 -非递归的方法是定义两个[栈](/stack/)来分别存储运算符和运算数。每当遇到一个数直接放进数的栈;每当遇到一个操作符时,要查找之前运算符栈中的元素,按照预先定义好的优先级来进行适当的弹出操作(弹出的同时求出对应的子表达式的值)。 +非递归的方法是定义两个 [栈](/stack/) 来分别存储运算符和运算数。每当遇到一个数直接放进数的栈;每当遇到一个操作符时,要查找之前运算符栈中的元素,按照预先定义好的优先级来进行适当的弹出操作(弹出的同时求出对应的子表达式的值)。 我们要知道:算术表达式分为三种,分别是前缀表达式、中缀表达式、后缀表达式。其中,中缀表达式是我们日常生活中最常用的表达式;后缀表达式是计算机最容易理解的表达式。为什么说后缀表达式最容易被计算机理解呢?因为后缀表达式不需要括号表示,它的运算顺序是唯一确定的。举个例子:在后缀表达式 $3 2 * 1 -$ 中,首先计算 $3 \times 2 = 6$ (使用最后一个运算符,即栈顶运算符),然后计算 $6 - 1 = 5$ 。可以看到:对于一个后缀表达式,只需要 **维护一个数字栈,每次遇到一个运算符,就取出两个栈顶元素,将运算结果重新压入栈中** 。最后,栈中唯一一个元素就是改后缀表达式的运算结果时间复杂度 $O(n)$ 。 @@ -88,6 +88,6 @@ int calc(const std::string &s) { // 计算转换好的后缀表达式 ## 习题 -1. [表达式求值(NOIP2013)](https://vijos.org/p/1849) -2. [后缀表达式](https://www.luogu.org/problemnew/show/P1449) -3. [Transform the Expression](https://www.spoj.com/problems/ONP/) +1. [表达式求值(NOIP2013)](https://vijos.org/p/1849) +2. [后缀表达式](https://www.luogu.org/problemnew/show/P1449) +3. [Transform the Expression](https://www.spoj.com/problems/ONP/) diff --git a/docs/misc/frac-programming.md b/docs/misc/frac-programming.md index ca96f79d..7a559cbd 100644 --- a/docs/misc/frac-programming.md +++ b/docs/misc/frac-programming.md @@ -174,7 +174,7 @@ inline bool check(double mid) { 因为我们只需要判最小值是否小于 $0$ ,所以只需要判断图中是否存在负环即可。 -另外本题存在一种复杂度 $O(nm)$ 的算法,如果有兴趣可以阅读[这篇文章](https://www.cnblogs.com/y-clever/p/7043553.html)。 +另外本题存在一种复杂度 $O(nm)$ 的算法,如果有兴趣可以阅读 [这篇文章](https://www.cnblogs.com/y-clever/p/7043553.html) 。 ```cpp inline int SPFA(int u, double mid) //判负环 { @@ -207,6 +207,6 @@ inline bool check(double mid) { //如果有负环返回 true ## 习题 -- [JSOI2016 最佳团体](https://www.luogu.org/problem/P4322) -- [SDOI2017 新生舞会](https://www.luogu.org/problem/P3705) -- [UVa1389 Hard Life](https://www.luogu.org/problem/UVA1389) +- [JSOI2016 最佳团体](https://www.luogu.org/problem/P4322) +- [SDOI2017 新生舞会](https://www.luogu.org/problem/P3705) +- [UVa1389 Hard Life](https://www.luogu.org/problem/UVA1389) diff --git a/docs/misc/gray-code.md b/docs/misc/gray-code.md index f8778f46..896488f9 100644 --- a/docs/misc/gray-code.md +++ b/docs/misc/gray-code.md @@ -120,6 +120,6 @@ int rev_g(int g) { ## 习题 -- [SGU #249 Matrix](http://codeforces.com/problemsets/acmsguru/problem/99999/249)Difficulty: medium +- [SGU #249 Matrix](http://codeforces.com/problemsets/acmsguru/problem/99999/249) Difficulty: medium - **本页面部分内容译自博文[Код Грея](http://e-maxx.ru/algo/gray_code)与其英文翻译版[Gray code](https://cp-algorithms.com/algebra/gray-code.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面部分内容译自博文 [Код Грея](http://e-maxx.ru/algo/gray_code) 与其英文翻译版 [Gray code](https://cp-algorithms.com/algebra/gray-code.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/misc/hill-climbing.md b/docs/misc/hill-climbing.md index 370ffc5a..4b1c5941 100644 --- a/docs/misc/hill-climbing.md +++ b/docs/misc/hill-climbing.md @@ -27,7 +27,7 @@ 关于降温:降温参数是略小于 $1$ 的常数,一般在 $[0.985, 0.999]$ 中选取。 -### 例 1[「JSOI2008」球形空间产生器](https://www.luogu.org/problem/P4035) +### 例 1 [「JSOI2008」球形空间产生器](https://www.luogu.org/problem/P4035) 题意:给出 $n$ 维空间中的 $n$ 个点,已知它们在同一个 $n$ 维球面上,求出球心。 $n \leq 10$ ,坐标绝对值不超过 $10000$ 。 @@ -85,7 +85,7 @@ * * * -### 例 2[「BZOJ 3680」吊打 XXX](https://www.lydsy.com/JudgeOnline/problem.php?id=3680) +### 例 2 [「BZOJ 3680」吊打 XXX](https://www.lydsy.com/JudgeOnline/problem.php?id=3680) 题意:求 $n$ 个点的带权类费马点。 @@ -138,4 +138,4 @@ ## 劣势 -其实爬山算法的劣势上文已经提及:它容易陷入一个局部最优解。当目标函数不是单峰函数时,这个劣势是致命的。因此我们要引进[ **模拟退火** ](/misc/simulated-annealing/)。 +其实爬山算法的劣势上文已经提及:它容易陷入一个局部最优解。当目标函数不是单峰函数时,这个劣势是致命的。因此我们要引进 [ **模拟退火** ](/misc/simulated-annealing/) 。 diff --git a/docs/misc/io.md b/docs/misc/io.md index 0a439b9b..c09323b5 100644 --- a/docs/misc/io.md +++ b/docs/misc/io.md @@ -189,7 +189,7 @@ inline void write(int x) { ## 使输入输出优化更为通用 -如果你的程序使用多个类型的变量,那么可能需要写多个输入输出优化的函数。下面给出的代码使用[C++ 中的 `template` ](http://www.cplusplus.com/doc/oldtutorial/templates)实现了对于所有整数类型的输入输出优化。 +如果你的程序使用多个类型的变量,那么可能需要写多个输入输出优化的函数。下面给出的代码使用 [C++ 中的 `template` ](http://www.cplusplus.com/doc/oldtutorial/templates) 实现了对于所有整数类型的输入输出优化。 ```cpp template @@ -282,6 +282,6 @@ using namespace IO; ## 参考 - + - + diff --git a/docs/misc/josephus.md b/docs/misc/josephus.md index 4cc1b515..bcd23a7f 100644 --- a/docs/misc/josephus.md +++ b/docs/misc/josephus.md @@ -82,4 +82,4 @@ $$ 所以 $x \sim k \ln n, k\to \infty$ ,即 $-\dfrac{\ln n}{\ln\left(1-\frac{1}{k}\right)}= \Theta (k\log n)$ - **本页面主要译自博文[Задача Иосифа](https://e-maxx.ru/algo/joseph_problem)与其英文翻译版[Josephus Problem](https://cp-algorithms.com/others/josephus_problem.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Задача Иосифа](https://e-maxx.ru/algo/joseph_problem) 与其英文翻译版 [Josephus Problem](https://cp-algorithms.com/others/josephus_problem.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/misc/largest-matrix.md b/docs/misc/largest-matrix.md index 914fc483..398128b3 100644 --- a/docs/misc/largest-matrix.md +++ b/docs/misc/largest-matrix.md @@ -57,8 +57,8 @@ for (int i = 1; i <= n; i++) ## 习题 -[luogu P4147 玉蟾宫](https://www.luogu.org/problemnew/show/P4147) + [luogu P4147 玉蟾宫](https://www.luogu.org/problemnew/show/P4147) -[luogu P1578 奶牛浴场](https://www.luogu.org/problemnew/show/P1578) + [luogu P1578 奶牛浴场](https://www.luogu.org/problemnew/show/P1578) -[\[ZJOI2007\]棋盘制作](https://www.lydsy.com/JudgeOnline/problem.php?id=1057) + [\[ZJOI2007\]棋盘制作](https://www.lydsy.com/JudgeOnline/problem.php?id=1057) diff --git a/docs/misc/magic.md b/docs/misc/magic.md index 1e40dd53..5d856494 100644 --- a/docs/misc/magic.md +++ b/docs/misc/magic.md @@ -2,14 +2,14 @@ 由于众所周知的原因,不是所有境外网站在大陆所有地区都能够正常访问。对于 OIer 而言,进一步学习的需求往往因此难以得到满足。 -注:本项目在编写过程中受到[@GoogleHosts](https://github.com/GoogleHosts/hosts)的大力支持,在此表示感谢。 +注:本项目在编写过程中受到 [@GoogleHosts](https://github.com/GoogleHosts/hosts) 的大力支持,在此表示感谢。 本页仅用于介绍,版权归服务提供者所有。 ## Hosts -[@GoogleHosts](https://github.com/GoogleHosts/hosts)致力于维护 `hosts` 文件,优化中国大陆对众多网站的访问。 `hosts` 文件的作用是将域名指向访问速度更优秀的对应 `ip` 地址,可以避免一定程度的干扰。 + [@GoogleHosts](https://github.com/GoogleHosts/hosts) 致力于维护 `hosts` 文件,优化中国大陆对众多网站的访问。 `hosts` 文件的作用是将域名指向访问速度更优秀的对应 `ip` 地址,可以避免一定程度的干扰。 -另外,[@GoogleHosts](https://github.com/GoogleHosts/hosts)也搭建了[公益服务](https://github.com/googlehosts/hosts/wiki/%E5%AE%9E%E9%AA%8C%E5%AE%A4),包含 防污染 DNS、Shadowsocks 服务和 Telegram 专用代理等。 +另外, [@GoogleHosts](https://github.com/GoogleHosts/hosts) 也搭建了 [公益服务](https://github.com/googlehosts/hosts/wiki/%E5%AE%9E%E9%AA%8C%E5%AE%A4) ,包含 防污染 DNS、Shadowsocks 服务和 Telegram 专用代理等。 ## Shadowsocks @@ -17,21 +17,21 @@ Shadowsocks 是一个安全的 `socks5` 代理,支持多种平台。 ### Windows -下载地址:[shadowsocks-win](https://github.com/shadowsocks/shadowsocks-windows/releases)\|[Outline Windows](https://raw.githubusercontent.com/Jigsaw-Code/outline-releases/master/client/Outline-Client.exe) +下载地址: [shadowsocks-win](https://github.com/shadowsocks/shadowsocks-windows/releases) \| [Outline Windows](https://raw.githubusercontent.com/Jigsaw-Code/outline-releases/master/client/Outline-Client.exe) ### Mac OS X -下载地址:[ShadowsocksX-NG](https://github.com/shadowsocks/ShadowsocksX-NG/releases)\|[Outline macOS](https://itunes.apple.com/app/outline-app/id1356178125) +下载地址: [ShadowsocksX-NG](https://github.com/shadowsocks/ShadowsocksX-NG/releases) \| [Outline macOS](https://itunes.apple.com/app/outline-app/id1356178125) ### Linux -自动安装脚本:[lrinQVQ/script](https://github.com/lrinQVQ/script) +自动安装脚本: [lrinQVQ/script](https://github.com/lrinQVQ/script) ### 为什么不推荐使用 ssr? -ssr 在开发过程中违反了[GPL 协议](https://zh.wikipedia.org/wiki/GNU%E9%80%9A%E7%94%A8%E5%85%AC%E5%85%B1%E8%AE%B8%E5%8F%AF%E8%AF%81),GPL 要求再分发时应开放源代码,而 ssr 的维护者并没有做到这一点。作为一个合格的 OIer, **遵守开源协议** 是最起码的要求,所以这里并不提倡使用 ssr。 +ssr 在开发过程中违反了 [GPL 协议](https://zh.wikipedia.org/wiki/GNU%E9%80%9A%E7%94%A8%E5%85%AC%E5%85%B1%E8%AE%B8%E5%8F%AF%E8%AF%81) ,GPL 要求再分发时应开放源代码,而 ssr 的维护者并没有做到这一点。作为一个合格的 OIer, **遵守开源协议** 是最起码的要求,所以这里并不提倡使用 ssr。 -引用 clowwindy 的一段著名的[评论](https://github.com/shadowsocks/shadowsocks-windows/issues/293#issuecomment-132253168)作为结语。 +引用 clowwindy 的一段著名的 [评论](https://github.com/shadowsocks/shadowsocks-windows/issues/293#issuecomment-132253168) 作为结语。 ## 关于中国的互联网 @@ -51,4 +51,4 @@ ssr 在开发过程中违反了[GPL 协议](https://zh.wikipedia.org/wiki/GNU%E9 * * * -> [I believe you guys will make great stuff with Network Extensions.](https://github.com/shadowsocks/shadowsocks-iOS/issues/124#issuecomment-133630294) +> [I believe you guys will make great stuff with Network Extensions.](https://github.com/shadowsocks/shadowsocks-iOS/issues/124#issuecomment-133630294) diff --git a/docs/misc/mo-algo.md b/docs/misc/mo-algo.md index 3d0ab964..5f07d0fb 100644 --- a/docs/misc/mo-algo.md +++ b/docs/misc/mo-algo.md @@ -2,7 +2,7 @@ author: greyqz ## 普通莫队算法 -(主要参考了。) +(主要参考了 。) ### 概述 @@ -87,7 +87,7 @@ $$ ### 例题 & 代码 -[小 Z 的袜子](https://www.lydsy.com/JudgeOnline/problem.php?id=2038) + [小 Z 的袜子](https://www.lydsy.com/JudgeOnline/problem.php?id=2038) 思路:莫队算法模板题。 @@ -252,7 +252,7 @@ struct node { ### 例题 -[数颜色 BZOJ - 2120](https://www.lydsy.com/JudgeOnline/problem.php?id=2120) + [数颜色 BZOJ - 2120](https://www.lydsy.com/JudgeOnline/problem.php?id=2120) 题目大意:给你一个序列,M 个操作,有两种操作: @@ -363,7 +363,7 @@ dfs 一棵树,然后如果 dfs 到 x 点,就 push_back(x),dfs 完 x 点, 这样的话,我们就把一棵树处理成了序列。 -例题是[\[WC2013\]糖果公园](http://uoj.ac/problem/58), 这题是带修改树上莫队 +例题是 [\[WC2013\]糖果公园](http://uoj.ac/problem/58) , 这题是带修改树上莫队 题意是给你一棵树,每个点有颜色,每次询问 @@ -576,7 +576,7 @@ int main() { - 每个节点都要属于一个块 - 编号相邻的块之间的距离不能太大 -了解了这些条件后,我们看到这样一道题[\[SCOI2005\]王室联邦](https://www.lydsy.com/JudgeOnline/problem.php?id=1086) +了解了这些条件后,我们看到这样一道题 [\[SCOI2005\]王室联邦](https://www.lydsy.com/JudgeOnline/problem.php?id=1086) 在这道题的基础上我们只要保证最后一个条件就可以解决分块的问题了 diff --git a/docs/misc/parallel-binsearch.md b/docs/misc/parallel-binsearch.md index 83d61cae..33e560fa 100644 --- a/docs/misc/parallel-binsearch.md +++ b/docs/misc/parallel-binsearch.md @@ -143,7 +143,7 @@ void solve(int l, int r, vector a, vector q) ### 带修区间第 k 小:整体二分的完整运用 -> **题 4** [Dynamic Rankings](http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2112)给定一个数列,要支持单点修改,区间查第 $k$ 小。 +> **题 4** [Dynamic Rankings](http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2112) 给定一个数列,要支持单点修改,区间查第 $k$ 小。 修改操作可以直接理解为从原数列中删去一个数再添加一个数,为方便起见,将询问和修改统称为“操作”。因后面的操作会依附于之前的操作,不能如题 3 一样将统计和处理询问分开,故可将所有操作存于一个数组,用标识区分类型,依次处理每个操作。为便于处理树状数组,修改操作可分拆为擦除操作和插入操作。 @@ -205,9 +205,9 @@ void solve(int l, int r, int L, int R) ### 参考习题 -[「国家集训队」矩阵乘法](https://www.luogu.org/problemnew/show/P1527) + [「国家集训队」矩阵乘法](https://www.luogu.org/problemnew/show/P1527) -[「POI2011 R3 Day2」流星 Meteors](https://loj.ac/problem/2169) + [「POI2011 R3 Day2」流星 Meteors](https://loj.ac/problem/2169) ## 参考资料 diff --git a/docs/misc/random.md b/docs/misc/random.md index 8d37ef04..3e4aa178 100644 --- a/docs/misc/random.md +++ b/docs/misc/random.md @@ -27,7 +27,7 @@ 是一个随机数生成器类,效用同 `rand` ,优点是更加随机(出现循环的周期更长)且速度比 `rand()` 快很多。使用时需要 `#include` 。 - `mt19937` 基于[Mersenne Twister algorithm](https://en.wikipedia.org/wiki/Mersenne_Twister),使用时用其定义一个随机数生成器即可: `std::mt19937 myrand(seed)` , `seed` 可不填,不填 `seed` 则会使用默认随机种子。 + `mt19937` 基于 [Mersenne Twister algorithm](https://en.wikipedia.org/wiki/Mersenne_Twister) ,使用时用其定义一个随机数生成器即可: `std::mt19937 myrand(seed)` , `seed` 可不填,不填 `seed` 则会使用默认随机种子。 `mt19937` 重载了 `operator ()` ,需要生成随机数时调用 `myrand()` 即可返回一个随机数。 @@ -63,7 +63,7 @@ int main() { 区别在于必须使用自定义的随机数生成器: `std::shuffle(first, last, myrand())` 。 -下面是用 `rand()` 及 `random_shuffle()` 编写的一个数据生成器。生成数据为[「ZJOI2012」灾难](https://www.luogu.org/problemnew/show/P2597)的随机小数据。 +下面是用 `rand()` 及 `random_shuffle()` 编写的一个数据生成器。生成数据为 [「ZJOI2012」灾难](https://www.luogu.org/problemnew/show/P2597) 的随机小数据。 ```cpp #include @@ -89,7 +89,7 @@ int main() { ## Example I -先来看一道网络流题:[「TJOI2015」线性代数](https://www.lydsy.com/JudgeOnline/problem.php?id=3996)。 +先来看一道网络流题: [「TJOI2015」线性代数](https://www.lydsy.com/JudgeOnline/problem.php?id=3996) 。 我们并不想写网络流,于是开始偷税。建模?不存在的。 diff --git a/docs/misc/simulated-annealing.md b/docs/misc/simulated-annealing.md index 66f61037..7b518e69 100644 --- a/docs/misc/simulated-annealing.md +++ b/docs/misc/simulated-annealing.md @@ -6,7 +6,7 @@ ## 实现 -根据[爬山算法](/misc/hill-climbing/)的过程,我们发现:对于一个当前最优解附近的非最优解,爬山算法直接舍去了这个解。而很多情况下,我们需要去接受这个非最优解从而跳出这个局部最优解,即为模拟退火算法。 +根据 [爬山算法](/misc/hill-climbing/) 的过程,我们发现:对于一个当前最优解附近的非最优解,爬山算法直接舍去了这个解。而很多情况下,我们需要去接受这个非最优解从而跳出这个局部最优解,即为模拟退火算法。 > **什么是退火?** (选自百度百科) > @@ -38,7 +38,7 @@ $$ 注意为了使得解更为精确,我们通常不直接取当前解作为答案,而是在退火过程中维护遇到的所有解的最优值。 -引用一张[Wiki - Simulated annealing](https://en.wikipedia.org/wiki/Simulated_annealing)的图片(随着温度的降低,跳跃越来越不随机,最优解也越来越稳定)。 +引用一张 [Wiki - Simulated annealing](https://en.wikipedia.org/wiki/Simulated_annealing) 的图片(随着温度的降低,跳跃越来越不随机,最优解也越来越稳定)。 ![](./images/simulated-annealing.gif) @@ -46,7 +46,7 @@ $$ ## 代码 -此处代码以[「BZOJ 3680」吊打 XXX](https://www.lydsy.com/JudgeOnline/problem.php?id=3680)(求 $n$ 个点的带权类费马点)为例。 +此处代码以 [「BZOJ 3680」吊打 XXX](https://www.lydsy.com/JudgeOnline/problem.php?id=3680) (求 $n$ 个点的带权类费马点)为例。 ```cpp #include @@ -102,6 +102,6 @@ int main() { ## 习题 -- [「BZOJ 3680」吊打 XXX](https://www.lydsy.com/JudgeOnline/problem.php?id=3680) -- [「JSOI 2016」炸弹攻击](https://www.lydsy.com/JudgeOnline/problem.php?id=4852) -- [「HAOI 2006」均分数据](https://www.lydsy.com/JudgeOnline/problem.php?id=2428) +- [「BZOJ 3680」吊打 XXX](https://www.lydsy.com/JudgeOnline/problem.php?id=3680) +- [「JSOI 2016」炸弹攻击](https://www.lydsy.com/JudgeOnline/problem.php?id=4852) +- [「HAOI 2006」均分数据](https://www.lydsy.com/JudgeOnline/problem.php?id=2428) diff --git a/docs/misc/stern-brocot.md b/docs/misc/stern-brocot.md index 37c2deb9..82ab5c0c 100644 --- a/docs/misc/stern-brocot.md +++ b/docs/misc/stern-brocot.md @@ -129,4 +129,4 @@ L_i=L_{i-1}+\varphi(i)\\ L_i=1+\sum_{k=1}^i\varphi(k) $$ - **本页面主要译自博文[Дерево Штерна-Броко. Ряд Фарея](http://e-maxx.ru/algo/stern_brocot_farey)与其英文翻译版[The Stern-Brocot Tree and Farey Sequences](https://cp-algorithms.com/others/stern_brocot_tree_farey_sequences.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Дерево Штерна-Броко. Ряд Фарея](http://e-maxx.ru/algo/stern_brocot_farey) 与其英文翻译版 [The Stern-Brocot Tree and Farey Sequences](https://cp-algorithms.com/others/stern_brocot_tree_farey_sequences.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/search/astar.md b/docs/search/astar.md index 30146026..5d151473 100644 --- a/docs/search/astar.md +++ b/docs/search/astar.md @@ -1,4 +1,4 @@ -A\*算法是[BFS](/search/bfs)的一种改进。 +A\*算法是 [BFS](/search/bfs) 的一种改进。 定义起点 $s$ ,终点 $t$ 。 @@ -14,9 +14,9 @@ A\*算法每次从 **优先队列** 中取出一个 $f$ 最小的,然后更新 上述条件下,如果 $h$ **满足三角形不等式,则 A\*算法不会将重复结点加入队列** 。 -其实…… $h=0$ 时就是[DFS](/search/dfs)算法, $h=0$ 并且边权为 $1$ 时就是[BFS](/search/bfs)。 +其实…… $h=0$ 时就是 [DFS](/search/dfs) 算法, $h=0$ 并且边权为 $1$ 时就是 [BFS](/search/bfs) 。 -## 例题[八数码](https://www.luogu.org/problemnew/show/P1379) +## 例题 [八数码](https://www.luogu.org/problemnew/show/P1379) 题目大意:在 $3\times 3$ 的棋盘上,摆有八个棋子,每个棋子上标有 1 至 8 的某一数字。棋盘中留有一个空格,空格用 0 来表示。空格周围的棋子可以移到空格中,这样原来的位置就会变成空格。给出一种初始布局和目标布局(为了使题目简单,设目标状态为 @@ -104,7 +104,7 @@ int main() { } ``` -## 例题[k 短路](https://www.luogu.org/problemnew/show/P2483) +## 例题 [k 短路](https://www.luogu.org/problemnew/show/P2483) 题目大意:按顺序求一个有向图上从结点 $s$ 到结点 $t$ 的所有路径最小的前任意多(不妨设为 $k$ )个。 diff --git a/docs/search/bfs.md b/docs/search/bfs.md index 93336099..a4c5d934 100644 --- a/docs/search/bfs.md +++ b/docs/search/bfs.md @@ -1,3 +1,3 @@ -BFS 是图论中的一种遍历算法,详见[BFS](/graph/bfs). +BFS 是图论中的一种遍历算法,详见 [BFS](/graph/bfs) . BFS 在搜索中也很常用,将每个状态对应为图中的一个点即可。 diff --git a/docs/search/dfs.md b/docs/search/dfs.md index 26555e23..dbd05bf3 100644 --- a/docs/search/dfs.md +++ b/docs/search/dfs.md @@ -1,4 +1,4 @@ -DFS 为图论中的概念,详见[DFS(图论)](/graph/dfs)页面。在 **搜索算法** 中,该词常常指利用递归函数方便地实现暴力枚举的算法,与图论中的 DFS 算法有一定相似之处,但并不完全相同。 +DFS 为图论中的概念,详见 [DFS(图论)](/graph/dfs) 页面。在 **搜索算法** 中,该词常常指利用递归函数方便地实现暴力枚举的算法,与图论中的 DFS 算法有一定相似之处,但并不完全相同。 考虑这个例子: @@ -53,7 +53,7 @@ dfs(n, 1, 1); ## 例题 -[Luogu P1706 全排列问题](https://www.luogu.org/problemnew/show/P1706) + [Luogu P1706 全排列问题](https://www.luogu.org/problemnew/show/P1706) C++ 代码: diff --git a/docs/search/idastar.md b/docs/search/idastar.md index e89a09c2..b75b7400 100644 --- a/docs/search/idastar.md +++ b/docs/search/idastar.md @@ -1,4 +1,4 @@ -学习 IDA\*之前,请确保您已经学完了[A\*](/search/astar)算法和[迭代加深搜索](/search/iterative)。 +学习 IDA\*之前,请确保您已经学完了 [A\*](/search/astar) 算法和 [迭代加深搜索](/search/iterative) 。 ## IDA\*简介 @@ -157,4 +157,4 @@ int main() { ## 练习题 -[旋转游戏 UVa1343](https://www.luogu.org/problem/show?pid=uva1343) + [旋转游戏 UVa1343](https://www.luogu.org/problem/show?pid=uva1343) diff --git a/docs/search/index.md b/docs/search/index.md index 06be6acc..e8785cee 100644 --- a/docs/search/index.md +++ b/docs/search/index.md @@ -2,25 +2,25 @@ ## 深度优先搜索 (DFS) -主条目:[DFS(搜索)](/search/dfs/) +主条目: [DFS(搜索)](/search/dfs/) ## 宽度优先搜索 (BFS) -主条目:[BFS(搜索)](/search/bfs/) +主条目: [BFS(搜索)](/search/bfs/) ### 双向宽度优先搜索 -主条目:[双向广搜](/search/dbfs/) +主条目: [双向广搜](/search/dbfs/) 从状态图上起点和终点同时开始进行宽度优先搜索,如果发现相遇了,那么可以认为是获得了可行解。 ## A\*搜索 -主条目:[A\*](/search/astar/) +主条目: [A\*](/search/astar/) ## IDA\*搜索 -主条目:[IDA\*](/search/idastar/) +主条目: [IDA\*](/search/idastar/) ## 剪枝 @@ -46,11 +46,11 @@ 所谓 **meet-in-middle** , 就是让 DFS 的状态在中间的时候碰面。我们知道,如果一个暴力 dfs 有 $K$ 个转移,那么它的时间复杂度(大多数情况)是 $O(K^N)$ 的。那我们就想,当 $N$ 到达一定程度时,TLE 会变成必然。 -例题[Luogu P2962](https://www.luogu.org/problemnew/show/P2962) +例题 [Luogu P2962](https://www.luogu.org/problemnew/show/P2962) 我们正常想,如果这道题暴力 DFS 找开关灯的状态,时间复杂度就是 $O(2^{n})$ , 显然超时。不过,如果我们用 **meet-in-middle** 的话,时间复杂度将会变为 $O(2^{n/2} \times 2)$ 而已。 **meet-in-middle** 就是让我们先找一半的状态,也就是 $1$ 到 $\mathrm{mid}$ 的状态,再找剩下的状态就可以了。我们把前半段的状态全部存储在 `map` 里面,然后在找后半段的状态的时候,先判断后半段是不是都合法,就可以判断上半段有没有配对的上半段使得整段合法。 ## 经典题目 -- [\[kuangbin 带你飞\]专题一 简单搜索](https://vjudge.net/contest/65959) -- [\[kuangbin 带你飞\]专题二 搜索进阶](https://vjudge.net/contest/65997) +- [\[kuangbin 带你飞\]专题一 简单搜索](https://vjudge.net/contest/65959) +- [\[kuangbin 带你飞\]专题二 搜索进阶](https://vjudge.net/contest/65997) diff --git a/docs/search/opt.md b/docs/search/opt.md index 4519dd36..4dcfc09a 100644 --- a/docs/search/opt.md +++ b/docs/search/opt.md @@ -29,7 +29,7 @@ void dfs(传入数值) { ### 记忆化搜索 -因为在搜索中,相同的传入值往往会带来相同的解,那我们就可以用数组来记忆,详见[记忆化搜索](/dp/memo/)。 +因为在搜索中,相同的传入值往往会带来相同的解,那我们就可以用数组来记忆,详见 [记忆化搜索](/dp/memo/) 。 **模板:** diff --git a/docs/string/ac-automaton.md b/docs/string/ac-automaton.md index 2a8b87ab..603c4584 100644 --- a/docs/string/ac-automaton.md +++ b/docs/string/ac-automaton.md @@ -163,7 +163,7 @@ int query(char *t) { 时间复杂度:AC 自动机的时间复杂度在需要找到所有匹配位置时是 $O(|s|+m)$ ,其中 $|s|$ 表示文本串的长度, $m$ 表示模板串的总匹配次数;而只需要求是否匹配时时间复杂度为 $O(|s|)$ 。 ???+ note "模板 1" - [LuoguP3808【模板】AC 自动机(简单版)](https://www.luogu.org/problemnew/show/P3808) + [LuoguP3808【模板】AC 自动机(简单版)](https://www.luogu.org/problemnew/show/P3808) ```cpp #include @@ -221,7 +221,7 @@ int query(char *t) { ``` ???+ note "模板 2" - [P3796 【模板】AC 自动机(加强版)](https://www.luogu.org/problemnew/show/P3796) + [P3796 【模板】AC 自动机(加强版)](https://www.luogu.org/problemnew/show/P3796) ```cpp #include @@ -312,7 +312,7 @@ int query(char *t) { ### KMP 自动机 -KMP 自动机就是一个不断读入待匹配串,每次匹配时走到接受状态的 DFA。如果共有 $m$ 个状态,第 $i$ 个状态表示已经匹配了前 $i$ 个字符。那么我们定义 $trans_{i,c}$ 表示状态 $i$ 读入字符 $c$ 后到达的状态, $next_{i}$ 表示[prefix function](/string/prefix-function),则有: +KMP 自动机就是一个不断读入待匹配串,每次匹配时走到接受状态的 DFA。如果共有 $m$ 个状态,第 $i$ 个状态表示已经匹配了前 $i$ 个字符。那么我们定义 $trans_{i,c}$ 表示状态 $i$ 读入字符 $c$ 后到达的状态, $next_{i}$ 表示 [prefix function](/string/prefix-function) ,则有: $$ trans_{i,c} = @@ -324,7 +324,7 @@ $$ (约定 $next_{0}=0$ ) -我们发现 $trans_{i}$ 只依赖于之前的值,所以可以跟[KMP](/string/prefix-function/#knuth-morris-pratt)一起求出来。 +我们发现 $trans_{i}$ 只依赖于之前的值,所以可以跟 [KMP](/string/prefix-function/#knuth-morris-pratt) 一起求出来。 时间和空间复杂度: $O(m|\Sigma|)$ 。一些细节:走到接受状态之后立即转移到该状态的 $next$ 。 diff --git a/docs/string/hash.md b/docs/string/hash.md index 0a7f167b..444e998c 100644 --- a/docs/string/hash.md +++ b/docs/string/hash.md @@ -1,4 +1,4 @@ -在介绍 Hash 算法之前,首先你需要了解关于[字符串匹配](/string/match)的事情。 +在介绍 Hash 算法之前,首先你需要了解关于 [字符串匹配](/string/match) 的事情。 ## Hash 的思想 diff --git a/docs/string/kmp.md b/docs/string/kmp.md index 896d26e9..f96faffd 100644 --- a/docs/string/kmp.md +++ b/docs/string/kmp.md @@ -291,16 +291,16 @@ $$ ## 练习题目 -- [UVA 455 "Periodic Strings"](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=396) -- [UVA 11022 "String Factoring"](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1963) -- [UVA 11452 "Dancing the Cheeky-Cheeky"](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=2447) -- [UVA 12604 - Caesar Cipher](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4282) -- [UVA 12467 - Secret Word](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3911) -- [UVA 11019 - Matrix Matcher](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1960) -- [SPOJ - Pattern Find](http://www.spoj.com/problems/NAJPF/) -- [Codeforces - Anthem of Berland](http://codeforces.com/contest/808/problem/G) -- [Codeforces - MUH and Cube Walls](http://codeforces.com/problemset/problem/471/D) +- [UVA 455 "Periodic Strings"](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=396) +- [UVA 11022 "String Factoring"](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1963) +- [UVA 11452 "Dancing the Cheeky-Cheeky"](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=2447) +- [UVA 12604 - Caesar Cipher](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4282) +- [UVA 12467 - Secret Word](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3911) +- [UVA 11019 - Matrix Matcher](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1960) +- [SPOJ - Pattern Find](http://www.spoj.com/problems/NAJPF/) +- [Codeforces - Anthem of Berland](http://codeforces.com/contest/808/problem/G) +- [Codeforces - MUH and Cube Walls](http://codeforces.com/problemset/problem/471/D) * * * - **本页面主要译自博文[Префикс-функция. Алгоритм Кнута-Морриса-Пратта](http://e-maxx.ru/algo/prefix_function)与其英文翻译版[Prefix function. Knuth–Morris–Pratt algorithm](https://cp-algorithms.com/string/prefix-function.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Префикс-функция. Алгоритм Кнута-Морриса-Пратта](http://e-maxx.ru/algo/prefix_function) 与其英文翻译版 [Prefix function. Knuth–Morris–Pratt algorithm](https://cp-algorithms.com/string/prefix-function.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/string/lyndon.md b/docs/string/lyndon.md index 525db41e..99f01a02 100644 --- a/docs/string/lyndon.md +++ b/docs/string/lyndon.md @@ -89,6 +89,6 @@ string min_cyclic_string(string s) { ## 习题 -- [UVA #719 - Glass Beads](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=660) +- [UVA #719 - Glass Beads](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=660) - **本页面主要译自博文[Декомпозиция Линдона. Алгоритм Дюваля. Нахождение наименьшего циклического сдвига](http://e-maxx.ru/algo/duval_algorithm)与其英文翻译版[Lyndon factorization](https://cp-algorithms.com/string/lyndon_factorization.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Декомпозиция Линдона. Алгоритм Дюваля. Нахождение наименьшего циклического сдвига](http://e-maxx.ru/algo/duval_algorithm) 与其英文翻译版 [Lyndon factorization](https://cp-algorithms.com/string/lyndon_factorization.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/string/manacher.md b/docs/string/manacher.md index 5dc30390..2551d292 100644 --- a/docs/string/manacher.md +++ b/docs/string/manacher.md @@ -118,7 +118,7 @@ for (int i = 0; i < n; i++) { 因为在计算一个特定位置的答案时我们总会运行朴素算法,所以一眼看去该算法的时间复杂度为线性的事实并不显然。 -然而更仔细的分析显示出该算法具有线性复杂度。此处我们需要指出,[计算 Z 函数的算法](z-func.md)和该算法较为类似,并同样具有线性时间复杂度。 +然而更仔细的分析显示出该算法具有线性复杂度。此处我们需要指出, [计算 Z 函数的算法](z-func.md) 和该算法较为类似,并同样具有线性时间复杂度。 实际上,注意到朴素算法的每次迭代均会使 $r$ 增加 $1$ ,以及 $r$ 在算法运行过程中从不减小。这两个观察告诉我们朴素算法总共会进行 $O(n)$ 次迭代。 @@ -178,9 +178,9 @@ for (int i = 0, l = 0, r = -1; i < n; i++) { ## 练习题目 -- [UVA #11475 "Extend to Palindrome"](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2470) -- [P4555\[国家集训队\]最长双回文串](https://www.luogu.org/problemnew/show/P4555) +- [UVA #11475 "Extend to Palindrome"](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2470) +- [P4555\[国家集训队\]最长双回文串](https://www.luogu.org/problemnew/show/P4555) * * * - **本页面主要译自博文[Нахождение всех подпалиндромов](http://e-maxx.ru/algo/palindromes_count)与其英文翻译版[Finding all sub-palindromes in $O(N)$ ](https://cp-algorithms.com/string/manacher.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Нахождение всех подпалиндромов](http://e-maxx.ru/algo/palindromes_count) 与其英文翻译版 [Finding all sub-palindromes in $O(N)$ ](https://cp-algorithms.com/string/manacher.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/string/match.md b/docs/string/match.md index 772e98ba..2cade945 100644 --- a/docs/string/match.md +++ b/docs/string/match.md @@ -45,8 +45,8 @@ match(char *a, char *b, int n, int m) { ## Hash 的方法 -参见[Hash](/string/hash) +参见 [Hash](/string/hash) ## KMP 算法 -参见[KMP](/string/prefix-function/#knuth-morris-pratt) +参见 [KMP](/string/prefix-function/#knuth-morris-pratt) diff --git a/docs/string/sa.md b/docs/string/sa.md index f9c8f78a..a4f7d13a 100644 --- a/docs/string/sa.md +++ b/docs/string/sa.md @@ -407,13 +407,13 @@ $$ ### 连续的若干个相同子串 -我们可以枚举连续串的长度 $|s|$ ,按照 $|s|$ 对整个串进行分块,对相邻两块的块首进行 LCP 与 LCS 查询,具体可见[ **这篇论文** ](https://wenku.baidu.com/view/5b886b1ea76e58fafab00374.html) +我们可以枚举连续串的长度 $|s|$ ,按照 $|s|$ 对整个串进行分块,对相邻两块的块首进行 LCP 与 LCS 查询,具体可见 [ **这篇论文** ](https://wenku.baidu.com/view/5b886b1ea76e58fafab00374.html) ### 并查集 某些题目求解时要求你将后缀数组划分成若干个连续 LCP 长度大于等于某一值的段,亦即将 $h$ 数组划分成若干个连续最小值大于等于某一值的段并统计每一段的答案。如果有多次询问,我们可以将询问离线。观察到当给定值单调递减的时候,满足条件的区间个数总是越来越少,而新区间都是两个或多个原区间相连所得,且新区间中不包含在原区间内的部分的 $h$ 值都为减少到的这个值。我们只需要维护一个并查集,每次合并相邻的两个区间,并维护统计信息即可。 -经典题目:[「NOI2015」品酒大会](http://uoj.ac/problem/131) +经典题目: [「NOI2015」品酒大会](http://uoj.ac/problem/131) ### 线段树 @@ -423,43 +423,43 @@ $$ 有些题目让我们求关于一个位置与之前所有位置的 LCP 的长度情况。利用 $LCP_{i,j}=\min\{h_{i+1},h_{i+2},...,h_j\}$ 的性质,我们发现这个 $LCP$ 的值是单调递减的。那么我们可以用一个单调栈来维护这些 LCP 值:在新加入元素 $h_{i}$ 时,我们先把所有大于等于 $h_i$ 的值弹出,统计其个数,并将 $h_{i}$ 压入单调栈,个数为弹出的值的总个数加 $1$ 。 -经典题目有[「AHOI2013」差异](https://www.lydsy.com/JudgeOnline/problem.php?id=3238)和[「HAOI2016」找相同字符](https://www.lydsy.com/JudgeOnline/problem.php?id=4566)。 +经典题目有 [「AHOI2013」差异](https://www.lydsy.com/JudgeOnline/problem.php?id=3238) 和 [「HAOI2016」找相同字符](https://www.lydsy.com/JudgeOnline/problem.php?id=4566) 。 ## 习题 -- [Uva 760 - DNA Sequencing](http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=701) -- [Uva 1223 - Editor](http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=3664) -- [Codechef - Tandem](https://www.codechef.com/problems/TANDEM) -- [Codechef - Substrings and Repetitions](https://www.codechef.com/problems/ANUSAR) -- [Codechef - Entangled Strings](https://www.codechef.com/problems/TANGLED) -- [Codeforces - Martian Strings](http://codeforces.com/problemset/problem/149/E) -- [Codeforces - Little Elephant and Strings](http://codeforces.com/problemset/problem/204/E) -- [SPOJ - Ada and Terramorphing](http://www.spoj.com/problems/ADAPHOTO/) -- [SPOJ - Ada and Substring](http://www.spoj.com/problems/ADASTRNG/) -- [UVA - 1227 - The longest constant gene](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=3668) -- [SPOJ - Longest Common Substring](http://www.spoj.com/problems/LCS/en/) -- [UVA 11512 - GATTACA](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2507) -- [LA 7502 - Suffixes and Palindromes](https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=720&page=show_problem&problem=5524) -- [GYM - Por Costel and the Censorship Committee](http://codeforces.com/gym/100923/problem/D) -- [UVA 1254 - Top 10](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3695) -- [UVA 12191 - File Recover](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3343) -- [UVA 12206 - Stammering Aliens](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=3358) -- [Codechef - Jarvis and LCP](https://www.codechef.com/problems/INSQ16F) -- [LA 3943 - Liking's Letter](https://icpcarchive.ecs.baylor.edu/index.php?option=onlinejudge&Itemid=8&page=show_problem&problem=1944) -- [UVA 11107 - Life Forms](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2048) -- [UVA 12974 - Exquisite Strings](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=862&page=show_problem&problem=4853) -- [UVA 10526 - Intellectual Property](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1467) -- [UVA 12338 - Anti-Rhyme Pairs](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=3760) -- [DevSkills Reconstructing Blue Print of Life](https://devskill.com/CodingProblems/ViewProblem/328) -- [UVA 12191 - File Recover](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3343) -- [SPOJ - Suffix Array](http://www.spoj.com/problems/SARRAY/) -- [LA 4513 - Stammering Aliens](https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2514) -- [SPOJ - LCS2](http://www.spoj.com/problems/LCS2/) -- [Codeforces - Fake News (hard)](http://codeforces.com/contest/802/problem/I) -- [SPOJ - Longest Commong Substring](http://www.spoj.com/problems/LONGCS/) -- [SPOJ - Lexicographical Substring Search](http://www.spoj.com/problems/SUBLEX/) -- [Codeforces - Forbidden Indices](http://codeforces.com/contest/873/problem/F) -- [Codeforces - Tricky and Clever Password](http://codeforces.com/contest/30/problem/E) -- [LA 6856 - Circle of digits](https://icpcarchive.ecs.baylor.edu/index.php?option=onlinejudge&page=show_problem&problem=4868) - -本页面中([4070a9b](https://github.com/24OI/OI-wiki/pull/950/commits/4070a9b3db8576db16c74d3ec33806ad10476eef)引入的部分)主要译自博文[Суффиксный массив](http://e-maxx.ru/algo/suffix_array)与其英文翻译版[Suffix Array](https://cp-algorithms.com/string/suffix-array.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。 +- [Uva 760 - DNA Sequencing](http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=701) +- [Uva 1223 - Editor](http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=3664) +- [Codechef - Tandem](https://www.codechef.com/problems/TANDEM) +- [Codechef - Substrings and Repetitions](https://www.codechef.com/problems/ANUSAR) +- [Codechef - Entangled Strings](https://www.codechef.com/problems/TANGLED) +- [Codeforces - Martian Strings](http://codeforces.com/problemset/problem/149/E) +- [Codeforces - Little Elephant and Strings](http://codeforces.com/problemset/problem/204/E) +- [SPOJ - Ada and Terramorphing](http://www.spoj.com/problems/ADAPHOTO/) +- [SPOJ - Ada and Substring](http://www.spoj.com/problems/ADASTRNG/) +- [UVA - 1227 - The longest constant gene](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=3668) +- [SPOJ - Longest Common Substring](http://www.spoj.com/problems/LCS/en/) +- [UVA 11512 - GATTACA](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2507) +- [LA 7502 - Suffixes and Palindromes](https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=720&page=show_problem&problem=5524) +- [GYM - Por Costel and the Censorship Committee](http://codeforces.com/gym/100923/problem/D) +- [UVA 1254 - Top 10](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3695) +- [UVA 12191 - File Recover](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3343) +- [UVA 12206 - Stammering Aliens](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=3358) +- [Codechef - Jarvis and LCP](https://www.codechef.com/problems/INSQ16F) +- [LA 3943 - Liking's Letter](https://icpcarchive.ecs.baylor.edu/index.php?option=onlinejudge&Itemid=8&page=show_problem&problem=1944) +- [UVA 11107 - Life Forms](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2048) +- [UVA 12974 - Exquisite Strings](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=862&page=show_problem&problem=4853) +- [UVA 10526 - Intellectual Property](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1467) +- [UVA 12338 - Anti-Rhyme Pairs](https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=3760) +- [DevSkills Reconstructing Blue Print of Life](https://devskill.com/CodingProblems/ViewProblem/328) +- [UVA 12191 - File Recover](https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3343) +- [SPOJ - Suffix Array](http://www.spoj.com/problems/SARRAY/) +- [LA 4513 - Stammering Aliens](https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2514) +- [SPOJ - LCS2](http://www.spoj.com/problems/LCS2/) +- [Codeforces - Fake News (hard)](http://codeforces.com/contest/802/problem/I) +- [SPOJ - Longest Commong Substring](http://www.spoj.com/problems/LONGCS/) +- [SPOJ - Lexicographical Substring Search](http://www.spoj.com/problems/SUBLEX/) +- [Codeforces - Forbidden Indices](http://codeforces.com/contest/873/problem/F) +- [Codeforces - Tricky and Clever Password](http://codeforces.com/contest/30/problem/E) +- [LA 6856 - Circle of digits](https://icpcarchive.ecs.baylor.edu/index.php?option=onlinejudge&page=show_problem&problem=4868) + +本页面中( [4070a9b](https://github.com/24OI/OI-wiki/pull/950/commits/4070a9b3db8576db16c74d3ec33806ad10476eef) 引入的部分)主要译自博文 [Суффиксный массив](http://e-maxx.ru/algo/suffix_array) 与其英文翻译版 [Suffix Array](https://cp-algorithms.com/string/suffix-array.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。 diff --git a/docs/string/sam.md b/docs/string/sam.md index 571d78a6..bb28fff8 100644 --- a/docs/string/sam.md +++ b/docs/string/sam.md @@ -307,7 +307,7 @@ void sam_extend(char c) { ### 额外信息 -观察[实现](#_8)中的结构体的每个变量。实际上,尽管 SAM 本身由 `next` 组成,但 SAM 构造算法中作为辅助变量的 `link` 和 `len` 在应用中常常比 `next` 重要,甚至可以抛开 `next` 单独使用。 +观察 [实现](#_8) 中的结构体的每个变量。实际上,尽管 SAM 本身由 `next` 组成,但 SAM 构造算法中作为辅助变量的 `link` 和 `len` 在应用中常常比 `next` 重要,甚至可以抛开 `next` 单独使用。 设字符串的长度为 $n$ ,考虑 `extend` 操作中 `cur` 变量的值,这个节点对应的状态是执行 `extend` 操作时的当前字符串,即字符串的一个前缀,每个前缀有一个终点。这样得到的 $n$ 个节点,对应了 $n$ 个不同的 **终点** 。设第 $i$ 个节点为 $v_i$ ,对应的是 $S_{1 \ldots i}$ ,终点是 $i$ 。姑且把这些节点称之为“终点节点”。 @@ -576,8 +576,8 @@ $$ ## 例题 -- [SPOJ - SUBLEX](https://www.spoj.com/problems/SUBLEX/) -- [HihoCoder #1441 : 后缀自动机一·基本概念](http://hihocoder.com/problemset/problem/1441) +- [SPOJ - SUBLEX](https://www.spoj.com/problems/SUBLEX/) +- [HihoCoder #1441 : 后缀自动机一·基本概念](http://hihocoder.com/problemset/problem/1441) ## 相关资料 @@ -603,10 +603,10 @@ $$ - 《后缀自动机》,陈立杰。 - 《后缀自动机在字典树上的拓展》,刘研绎。 - 《后缀自动机及其应用》,张天扬。 -- -- -- +- +- +- * * * - **本页面主要译自博文[Суффиксный автомат](http://e-maxx.ru/algo/suffix_automata)与其英文翻译版[Suffix Automaton](https://cp-algorithms.com/string/suffix-automaton.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Суффиксный автомат](http://e-maxx.ru/algo/suffix_automata) 与其英文翻译版 [Suffix Automaton](https://cp-algorithms.com/string/suffix-automaton.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** diff --git a/docs/string/trie.md b/docs/string/trie.md index e0c320fc..7cf6a704 100644 --- a/docs/string/trie.md +++ b/docs/string/trie.md @@ -48,6 +48,6 @@ struct trie { 这时 $next$ 的定义:最长的等于同长度的后缀的从根开始的路径的长度。 -求法跟[KMP](/string/prefix-function/#knuth-morris-pratt)中的一样,只是要改成在 Trie 上[BFS](/search/bfs)。 +求法跟 [KMP](/string/prefix-function/#knuth-morris-pratt) 中的一样,只是要改成在 Trie 上 [BFS](/search/bfs) 。 复杂度:均摊分析失效了,其实只能在每条链上均摊分析,于是总复杂度为模式串长总和。 diff --git a/docs/string/z-func.md b/docs/string/z-func.md index 74aee90a..068f6197 100644 --- a/docs/string/z-func.md +++ b/docs/string/z-func.md @@ -155,7 +155,7 @@ vector z_function(string s) { 我们现在来考虑在若干具体情况下 Z 函数的应用。 -这些应用在很大程度上同[前缀函数](./kmp.md)的应用类似。 +这些应用在很大程度上同 [前缀函数](./kmp.md) 的应用类似。 ### 查找子串 @@ -189,18 +189,18 @@ vector z_function(string s) { 其中一种解法为:计算 $s$ 的 Z 函数,从小到大循环所有满足 $i$ 整除 $n$ 的 $i$ 。在找到第一个满足 $i + z[i] = n$ 的 $i$ 时终止。那么该字符串 $s$ 可被压缩为长度 $i$ 的字符串。 -该事实的证明同应用[前缀函数](./kmp.md)的解法证明一样。 +该事实的证明同应用 [前缀函数](./kmp.md) 的解法证明一样。 ## 练习题目 -- [Codeforces - Password\[Difficulty: Easy\]](http://codeforces.com/problemset/problem/126/B) -- [UVA # 455 "Periodic Strings"\[Difficulty: Medium\]](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=396) -- [UVA # 11022 "String Factoring"\[Difficulty: Medium\]](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1963) -- [UVa 11475 - Extend to Palindrome](http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2470) -- [LA 6439 - Pasti Pas!](https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=588&page=show_problem&problem=4450) -- [Codechef - Chef and Strings](https://www.codechef.com/problems/CHSTR) -- [Codeforces - Prefixes and Suffixes](http://codeforces.com/problemset/problem/432/D) +- [Codeforces - Password\[Difficulty: Easy\]](http://codeforces.com/problemset/problem/126/B) +- [UVA # 455 "Periodic Strings"\[Difficulty: Medium\]](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=396) +- [UVA # 11022 "String Factoring"\[Difficulty: Medium\]](http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1963) +- [UVa 11475 - Extend to Palindrome](http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2470) +- [LA 6439 - Pasti Pas!](https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=588&page=show_problem&problem=4450) +- [Codechef - Chef and Strings](https://www.codechef.com/problems/CHSTR) +- [Codeforces - Prefixes and Suffixes](http://codeforces.com/problemset/problem/432/D) * * * - **本页面主要译自博文[Z-функция строки и её вычисление](http://e-maxx.ru/algo/z_function)与其英文翻译版[Z-function and its calculation](https://cp-algorithms.com/string/z-function.html)。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** + **本页面主要译自博文 [Z-функция строки и её вычисление](http://e-maxx.ru/algo/z_function) 与其英文翻译版 [Z-function and its calculation](https://cp-algorithms.com/string/z-function.html) 。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。** -- 2.11.0