请注意,必须是有序数组,否则答案是错误的。
-关于具体使用方法,请参见 [STL 页面](/ds/stl.md) 。
+关于具体使用方法,请参见 [STL 页面](../lang/csl/index.md) 。
### 二分答案
比较 naive 的递归实现可能递归次数太多,容易超时。
-怎么优化呢?详见 [搜索优化](/search/opt.md) 和 [记忆化搜索](/dp/memo.md) 。
+怎么优化呢?详见 [搜索优化](../search/opt.md) 和 [记忆化搜索](../dp/memo.md) 。
## 分治算法
-对所有记录建 [堆](/ds/heap.md)
+对所有记录建 [堆](../ds/heap.md)
每次取出堆顶元素,就可以依次得到排好序的序列。
## 算法
-归并排序是一种采用了 [分治](/basic/divide-and-conquer.md) 思想的排序算法,其本质是一种 [CDQ 分治](/misc/cdq-divide.md) 。
+归并排序是一种采用了 [分治](./divide-and-conquer.md) 思想的排序算法,其本质是一种 [CDQ 分治](../misc/cdq-divide.md) 。
归并排序分为三个过程:
所谓逆序对,就是满足 $a_{i} > a_{j}$ 且 $i < j$ 的数对 $(i, j)$ 。
-可以用 [树状数组](/ds/bit.md) 、 [线段树](/ds/segment.md) 等数据结构来求,也可以用归并排序来求。
+可以用 [树状数组](../ds/bit.md) 、 [线段树](../ds/segment.md) 等数据结构来求,也可以用归并排序来求。
具体来说,上面归并排序中间注释掉的 `ans += mid - p` 就是在统计逆序对个数。
然后若是点权, $x,y$ 路径上的和为 $sum_x + sum_y - sum_{lca} - sum_{fa_{lca}}$ ;
否则若是边权, $x,y$ 路径上的和为 $sum_x + sum_y - 2sum_{lca}$ 。
-至于 lca 的求法请移步 [最近公共祖先](/graph/lca.md) 。
+至于 lca 的求法请移步 [最近公共祖先](../graph/lca.md) 。
### 习题
我们不妨先对这一列数排序,之后不难发现:如果有相等的两个数,它们一定在新数列中处于相邻的位置上。这时,只需要 $O(n)$ 地扫一遍新数列了。总的时间复杂度是排序的复杂度( $O(n\log n)$ )。
-排序也是 [二分查找](/basic/binary.md) 所要做的预处理工作。在排序后使用二分查找,我们可以在 $O(\log n)$ 的时间内在序列中查找指定的元素。
+排序也是 [二分查找](./binary.md) 所要做的预处理工作。在排序后使用二分查找,我们可以在 $O(\log n)$ 的时间内在序列中查找指定的元素。
author: hydingsy, Link-cute, Ir1d, greyqz, LuoshuiTianyi, Odeinjul
-在学习本章前请确认你已经学习了 [动态规划部分简介](/dp/index.md)
+在学习本章前请确认你已经学习了 [动态规划部分简介](./index.md)
在具体讲何为“背包 dp”前,先来看如下的例题:
## 介绍
-学习本节前,请务必先学习 [单调队列](/ds/monotonous-queue.md) 及 [单调栈](/ds/monotonous-stack.md) 部分。
+学习本节前,请务必先学习 [单调队列](../../ds/monotonous-queue.md) 及 [单调栈](../../ds/monotonous-stack.md) 部分。
??? 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|$ 点快乐值。