10.1

P12550

交换后无法换回来。等于把序列分成若干段,每段的价值为 AB 的逆序对数。

一段里不会有 种字符,不会有一个划分两边相同,不会有一个划分两边字符集相同。

只有两个转移点,是当前包含两个字符的最远连续段的两端。

P8493

的方案数是儿子为 的数量,组合意义是选一个儿子让他为 ,即选一条链。

每个叶子的贡献为根到它以外的点乱选的 ,区间 flip,线段树维护。

10.2

Q913

枚举中间哪些连通,要求出左右两个图在已经有一些点连通后的 MST。

只考虑图中的点,求 MST,扔掉没用的边,边数 。将中间所有点连通,求 MST,将连起来的点缩起来,点数

复杂度

P9055

对于 ,把 排成 段,其中出现 次的排在前面,最后按相同的顺序在结尾加上第 次的数。这样每个 的区间都合法。

对于 一样排成 段,剩下要在段间插入一些数。假设当前在这个间隔已经有 个数,在开头结尾加会有 ,中间会有 的不合法段。

现在开头结尾各补 ,再平均插在每个间隔中最优。

10.3

P6775

一定存在 ,进入子问题。

,要选出一个子集,使得 。bitset。

Q14129

连边等价于 连边。

。当做了 步后,所有 同余的点连通。接下来将进入 连边的子问题。

步进行二分,检查的时候如果点数还 一定不连通,否则 检查。

CF1017G

一个点为黑色,要求到根路径上一个后缀操作次数大于等于路径长度。初始赋为 ,单点加,后缀和 max。

的子树为白色,先清空子树内的操作次数,再在 抵消掉到根的最大后缀和,即把最大后缀和重新减成

CF2068B

P7560

换维扫描线。

找到后缀 min 的点,只用考虑其后面的操作。

10.7

Q12120

每个点在根在 dfn 序上变化的时候子树大小只有 段。现在有 个矩形的值。

通过把儿子按 排序再求 dfn 序,特殊处理掉父亲,再双指针,可以减少为 个矩形。扫描线。

Q8109

求一棵生成树出来。断 条边将其在 dfn 序上分为 段,每段连续且内部连通。段间的边数可以预处理二维前缀和与实际比较。缩点后判断。

10.9

dmy3349

给出三个整数 ,在 个节点有标号无根树中随机选择一棵树,并把 号点及其边删除,在满足剩下的连通块大小都不超过 的情况下,求剩下的连通块的期望个数。

结论

表示 个连通块用了 个,枚举当前最小点加一块:

又因为只需要知道 ,维护 ,每拼上一个连通块就让

AT_diverta2019_f

正着 dp 容易,

倒着做,在放一个树边之前必须放一些非树边。枚举当前放了哪些树边,同时维护当前的方案数和位置和

加树边必须加在最前,对于当前所有树边,位置向后移 ,变为

加非树边加在任意位置,对于当前所有树边,有其位置种方式加一,变为 。批量加入一堆非树边,形如阶乘。

10.10

Q8713

表示 AC 自动机节点 ,已经出现过状态 的串,先手的价值,转移是图。

按 s 从大到小分层考虑。如果后继状态 能去到上一层,更新 。如果 的所有后继状态都确定,确定 。否则取出当前最大的 ,如果 ,确定 ;否则此时剩下的状态都是求和。

Q4888

。要求

对于 取模后为 。即求 取模,只用算 次。

对于 ,即求 。当 时暴力。否则指数模 ,只需要关注是否存在 使得 。取 最大的 作为基准,如果其他的 太大(),一定能做出 。否则 bitset。

Q4811

的做法。对于每个儿子,检查 是否出现过。

的做法。枚举 ,记录有多少个值有叶子选了,当前已经选了哪些儿子。

根号分治,对于 个,和 ,再拼起来。

10.12

agc041f

钦定 个格子不满足限制,

枚举列 存在不满足限制格子,钦定 中不存在不满足限制格子,

对于每个行连续段,设 在这些地方有 列, 列。要么整行没有不满足限制格子,。要么选 个不满足限制格子,

建小根笛卡尔树,从儿子处合并 。再批量计算 行,每行