随笔分类 - 题解
摘要:两维独立,问题变为给一堆线段,每个线段可以选中间或两边,求选出的东西之交最大是多少。 按端点把数轴分段,则钦定任意一段在最终的交中,就可以确定所有线段的选择方案。 定义 表示钦定 段在最终的交中时交的大小,则答案为 。 考虑从左往右依次钦定每段在最终的交中
阅读全文
摘要:对原树任意剖一下,然后链数等于叶子数。考虑分别算 在相同 / 不同链上的贡献。 注意到一个点 向链顶 / 链底延伸,形成的树链的 值都不超过 种, 记下这些 值的位置,记这些树链为 的前缀 / 后缀。 考虑 在相同链上的
阅读全文
摘要:设 的长度为 ,记 为关键点,当且仅当从 能引出 条互不相交的,长度为 的路径, 则只需判断蛇的某一端能否到达关键点。 以某个关键点为根,依次将蛇的两端移动至其子树内最深的叶子, 若某一时刻蛇的两端有祖先关系,则蛇可以到达关键点。 树上倍增维护
阅读全文
摘要:可以发现若最终所有棋子移动到 ,则操作次数一定是初始时所有棋子到 的距离和除以二, 于是只需求出哪些 可以作为最终所有棋子移动到的位置。 设 表示 子树内初始时棋子个数, 表示 子树内棋子经过若干操作后到 距离和最小是多少,$g_i
阅读全文
摘要:在点分树的每个点上维护 表示 子树内的点到 的距离集合, 表示 到其每个子树的距离最大值集合。特别地,若 是白点,还要在 中加入 , 即 $P_u=\begin{cases}\{\max\{C_v\}|fa_v=u\}&
阅读全文
摘要:bitset 乱搞字符串匹配经典题。设原串为 串。 维护 表示 字符的出现位置集合,这个在修改时容易用位运算做到。 考虑怎么匹配 串。扫描 串,设当前扫到第 位,维护 表示能匹配前 位的结束位置集合。 考虑从 位扫到 $
阅读全文
摘要:显然不满足“奇数位都是奇数,偶数位都是偶数”的排列一定无法排成升序,以下“序列”默认均满足这个条件。 定义“操作”指交换任意一个相邻三元组的 1,3 位,即不一定满足题目要求,但要保证操作后逆序对数减小。 特别地,称满足题目要求的操作为“合法操作”。容易发现一个操作合法当且仅当其能消去 个全
阅读全文
摘要:线段树每个点上维护区间最大值、最小值, 区间除以 时,由区间对应的每个节点向下递归到 的节点,在这些节点上区间推平。 每个节点被除 次后 ,所以总复杂度 。 #include <cstd
阅读全文
摘要:对每次询问,先求出最优方案下,左端点最多往右端点逼近几步, 然后同样求出最优方案下,右端点最多往逼近后的左端点逼近几步, 最后再逼近一步使左右端点重合即可。 倍增优化这个逼近的过程。 具体地,维护 表示从 走 步最左 / 右能走到哪, 然后 $
阅读全文
摘要:必选一条端点在直径端点的路径,所以以直径两端点为根建两棵树,考虑一棵树的答案。 需要选出 条根到叶子的路径, 条叶子到叶子的路径,最大化路径并边权和, 而必定存在方案使得每条路径都经过根: 所以只需考虑选出哪 个叶子,使得构造出路径的并,即这 个叶子的根
阅读全文
摘要:$$ \begin{aligned} &\sum_{i\in\text{subtree(u)}}d(u,i)^k\ =&\sum_{i\in\text{subtree(u)}}\sum\limits_{j=0}^k{d(u,i)\choose j}\begin{Bmatrix}k\j\end{B
阅读全文
摘要:若 路径的起点在 路径上,则 必须比 先走, 若 路径的终点在 路径上,则 必须比 先走。 考虑建图,边 存在当且仅当 必须比 先走, 若建出的图有拓扑序,则按拓扑序操作即可,否则无解。 建图的复杂度太
阅读全文
摘要:考虑对结点排列 ,可以标号 , 两点之间显然满足要求,$E_{p_i}-E_{p_{i-2}}=E_{p_i}-E_{p_{i-1}}+E_{p_{i-1}}-E_{p_{i-2}}=d(p_i,p_{i-1}
阅读全文