5.09

CF575A

维护转移矩阵,线段树维护一段区间的矩阵乘法。

CF1575H

建 KMP 自动机, 表示前 位,当前自动机上走到 ,已经匹配了 次的最小代价。当转移到终止节点时匹配次数加

AT_codefestival_2016_final_h

表示从后往前走到 ,谁先手。发现 ,改为一维。。只与 有关。

因为 ,改变 的初值也只有 种,而中间 不变。连边 dfs 记录每个 初值会变成什么。

5.10

CF1517F

容斥求出半径小于 的方案数。 表示 的子树内,最深的未染色点的距离和最浅的染色点的距离。发现 只有一个有用。前后缀和优化,状态数

CF1951G

用相邻两个球之间的距离来描述一个状态,鞅与停时定理。

差分

。终止势能为

CF1007B

预处理出每个数的所有因数,记为集合 。显然题目要求计数 。容斥,大力分讨。可以用 bitset 维护交集。如果把分解因数写成先分解质因数再 dfs 求因数,复杂度 ,常数约为

5.12

CF662C

状压每一行,记录每种状态在 列上出现的次数和最小代价,fwt。

模板 子集卷积

加一维记录集合元素个数,。先将每一维 or 卷积,再 将外层加法卷积。复杂度

CF1034E

无法子集卷积。因为对 取模,可以将 ,然后进行不取模 or 卷积。如果 。最后 再对 取模。

CF960G

枚举最大值的位置,左边有 个最大值,右边有 个。分治NTT求

5.13

CF377D

。矩形的交,扫描线。

5.14

CF1895F

容斥。存在 的方案数等于 的方案数减 的方案数。当确定了一个序列的最小值和差分数组就可以确定一个序列。前半部分方案数为 。后半部分矩阵快速幂

5.15

CF1886E

观察发现每个项目只与程序员数量和最小值有关,所以每个项目对应能力值连续的程序员最优。状压项目数。设 为前 个程序员匹配的项目状态为 是否可行,无法接受。交换维度,改为 表示状态 能与前缀 匹配的最小

全选不一定优。预处理 表示第 个项目从 开始匹配程序员,最少要匹配到哪里。

5.17

CF249D

贡献到 满足 。发现第一个限制无用,随便维护。

5.20

CF79D

异或差分后 个关键位置,状压。 最短路等于同时删 的代价。

CF626F

表示分了前 人, 组没封闭,代价为 。按权值从小到大加入,每个人代价是所有没封闭的组的数量乘相邻两个权值的差。

5.21

CF1575E

点分治,记录当前子树到分治中心的权值和和换车次数。将新子树的答案合并时分类讨论分治中心到子树祖先 的颜色。树状数组维护前缀和。

agc035d

向距离为 的点连边,为二分图。写为 。在两个 个点的图上分别二分图染色,一定存在 个在两张图上都同色的点。

QTREE6

树剖,对每个点维护当 为 0/1 时 子树内的最大连通块大小。还需要支持询问 到根第一个与 异色的点的位置,线段树上维护区间从右往左第一个 0/1 的位置。

5.22

agc014e

每次选择只被覆盖一次的边删掉。树剖,线段树维护覆盖次数的最小值和位置,以及用异或维护覆盖这条边的红边编号。

P5354

按二进制拆位贪心,树剖维护从左右进入 0/1 出来的值。压位用位运算一起做。

CF603E

等价于只存在大小为偶数的连通块。按权值排序加边,维护奇连通块的个数。

线段树分治,每条边都有一个影响范围。从右往左分治,每次右移加边的位置。