该文被密码保护。 阅读全文
摘要:
虚树 概述 虚树,即将树的一系列关键点及其 $lca$ 取出得到的一棵反映这些点在原树上的关系的树。 容易证明,维护一个按 $dfn$ 升序排序的优先队列,不断从队头取出两个元素求 $lca$ 后放回直到队列中只剩一个元素,所得的所有点就是虚树的所有点。显然,这代表着虚树的点数是 $\leqslan 阅读全文
摘要:
概述 单调栈,顾名思义,是元素满足单调性的栈。其主要用于预处理各种和偏序有关的信息。 特别地,我们将悬线法视为单调栈的一个变形,也在这里谈及。 所有二维平面问题采用 OI 坐标系。 实现原理 在准备加入元素时,将栈顶元素弹出直到加入后仍然满足单调性。 例题 P5788 【模板】单调栈/P1901 发 阅读全文
摘要:
前言 我原本打算写这么一个题记:“经过考量,我认为,这是我的题记。经审查,通过。” 但发现我的复盘报告的套路是前言。那么,这就是我的前言。经审查,通过。 赛时复原 约 8:17:怎么大家都开始打板子? 约 8:30 出头:打了个缺省源(有 bug:快写没有判负,chkmin 没有引用,在后来给我造成 阅读全文
摘要:
概述 最短路算法主要研究图上两点之间的最短路径问题。 事实上,许多问题都能转化为图来求解(图的本质就是点和边的集合,点是元素,边是元素之间的二元关系)。 所以最短路算法并不局限于“给出一张图,...”。 Floyd il void floyd(){ for(int k=1;k<=n;++k) for 阅读全文
摘要:
概述 李超线段树是真正用于维护“线段”的线段树。 具体来说,李超线段树主要用于维护平面上线段(表现为给出定义域的一次函数)信息,通常为某处的最大/小值等。 实现原理 不妨以加线段,查询 $l:x=k$ 与所有线段的交点的最大纵坐标为例。 众所周知,区间加等差数列,区间求和是容易的。然而区间取 $\m 阅读全文
摘要:
钦定顺序特别重要,这不仅关乎到可能的去重,也关乎到简化问题。当然,错误的顺序可能会使问题更复杂(来自图上状压计数)。 如果觉得题目无从下手,考虑 DP(来自蜜蜂搬家)。 尝试着设计一个不管有多复杂的 DP 状态,然后一点一点把握题目中各个要素的关系,找到转移的途径。 考虑尽量简洁地描述题目要素之间的 阅读全文
摘要:
概述 线段树优化通过线段树能快速区间取值和区间修改的特性,高效实现具有连续性的 dp 转移。 所谓的连续性可以是顺推的转移目标点为连续区间,也可以是逆推的转移出发点为连续区间,这一连续不一定必须是原数组下标这一维度上的。 效果一般为将 KD1D 的 dp 的 $O(n)$ 的转移优化至 $O(\lo 阅读全文
摘要:
线套线 规定使用 OI 坐标系。 (按我的代码习惯)竖着关于 $1\sim n$ 建一棵线段树,该线段树的每个节点都是一棵内层线段树,若该节点的管辖区间为 $[L,R]$,则该内层线段树的管辖范围为 $l,r$ 的节点的实际管辖矩形为 $(L,l)\sim (R,r)$。 单点加,矩形查 修改:在外 阅读全文
摘要:
(强制在线)单点修,区间第 $k$ 小 首先有一个简单的序列分块+值域二分做法: 序列分块,对每个块建值域树状数组。 修改时暴力修改,$O(\log)$。 询问时将两侧散块合并建一个虚块,然后在值域上二分,在每块内查询,$O(B\log+num\log^2)$。 显然这是可平衡的,令 $B=num\ 阅读全文