Loading docs/misc/cdq-divide.md +2 −2 Original line number Diff line number Diff line Loading @@ -226,7 +226,7 @@ int main() { 那么第二步怎么做呢? 其实和 cdq 分治求三维偏序差不多,我们会发现处理 $l \leq j \leq mid,mid+1 \leq i \leq r$ 的转移关系的时候我们已经不用管 $j<i$ 这个限制条件了,因此我们依然是将所有的点 $i$ 和点 $j$ 按 $a$ 值进行排序处理之后用双指针的方式将 $j$ 点插入到树状数组里,然后最后查一发前缀最大值更新一下 $dp_{i}$ 就可以了 其实和 cdq 分治求三维偏序差不多,我们会发现处理 $l \leq j \leq mid,mid+1 \leq i \leq r$ 的转移关系的时候我们已经不用管 $j<i$ 这个限制条件了,因此我们依然是将所有的点 $i$ 和点 $j$ 按 $a$ 值进行排序处理之后用双指针的方式将 $j$ 点插入到树状数组里,然后最后查一下前缀最大值更新一下 $dp_{i}$ 就可以了 你会发现此时的 cdq 写法和上一种处理点对间关系的 cdq 写法最大的不同就是处理 $l \leq j \leq mid,mid+1 \leq i \leq r$ 的点对这一部分,上面的写法中这一部分我们放到哪里都是可以的,但是,在用 cdq 分治优化 dp 的时候这个流程却必须夹在 $solve(l,mid),solve(mid+1,r)$ 的中间,为什么呢? Loading Loading @@ -445,7 +445,7 @@ int main() { 什么意思呢? 众所周知的是有些数据结构题需要我们兹次做 xxx 修改然后做 xxx 询问的情况 众所周知的是有些数据结构题需要我们支持做 xxx 修改然后做 xxx 询问的情况 然后你会发现一个有趣的事实是如果我们把询问进行离线之后,所有操作按照时间自然的排成了一个序列,另一个比较显然的事实是每一个修改会对它之后的询问发生关系,而这样的修改 - 询问关系一共会有 $O(n^2)$ 对 Loading Loading
docs/misc/cdq-divide.md +2 −2 Original line number Diff line number Diff line Loading @@ -226,7 +226,7 @@ int main() { 那么第二步怎么做呢? 其实和 cdq 分治求三维偏序差不多,我们会发现处理 $l \leq j \leq mid,mid+1 \leq i \leq r$ 的转移关系的时候我们已经不用管 $j<i$ 这个限制条件了,因此我们依然是将所有的点 $i$ 和点 $j$ 按 $a$ 值进行排序处理之后用双指针的方式将 $j$ 点插入到树状数组里,然后最后查一发前缀最大值更新一下 $dp_{i}$ 就可以了 其实和 cdq 分治求三维偏序差不多,我们会发现处理 $l \leq j \leq mid,mid+1 \leq i \leq r$ 的转移关系的时候我们已经不用管 $j<i$ 这个限制条件了,因此我们依然是将所有的点 $i$ 和点 $j$ 按 $a$ 值进行排序处理之后用双指针的方式将 $j$ 点插入到树状数组里,然后最后查一下前缀最大值更新一下 $dp_{i}$ 就可以了 你会发现此时的 cdq 写法和上一种处理点对间关系的 cdq 写法最大的不同就是处理 $l \leq j \leq mid,mid+1 \leq i \leq r$ 的点对这一部分,上面的写法中这一部分我们放到哪里都是可以的,但是,在用 cdq 分治优化 dp 的时候这个流程却必须夹在 $solve(l,mid),solve(mid+1,r)$ 的中间,为什么呢? Loading Loading @@ -445,7 +445,7 @@ int main() { 什么意思呢? 众所周知的是有些数据结构题需要我们兹次做 xxx 修改然后做 xxx 询问的情况 众所周知的是有些数据结构题需要我们支持做 xxx 修改然后做 xxx 询问的情况 然后你会发现一个有趣的事实是如果我们把询问进行离线之后,所有操作按照时间自然的排成了一个序列,另一个比较显然的事实是每一个修改会对它之后的询问发生关系,而这样的修改 - 询问关系一共会有 $O(n^2)$ 对 Loading