随笔分类 - 题解
摘要:题目传送门 前置知识 树状数组 | 序列分治 解法 考虑序列分治,设因 和 形成的分节点先后为 。 对于 ,等价于统计满足 \(\max\limits_{h=i}^{mid} \{ a_{h}
阅读全文
摘要:题目传送门 前置知识 最短路 | 最近公共祖先 | 虚树 解法 题目中所说的 回收路线树 即以 为根节点的最短路径树,可以使用 Dijkstra 构建。 标记 回收区域 本质上是对 回收区域 构建虚树,然后就和 luogu P2495 [SDOI2011] 消耗战 基本一致了,根据儿子节
阅读全文
摘要:题目传送门 前置知识 线段树与离线询问 解法 普通的回退背包无法处理本题中的删除操作,考虑线段树分治后转化为只进行添加的背包。 具体实现时可以对每个深度开一个背包的转移数组,时间复杂度为 ,可以接受。 代码 #include<bits/stdc++.h> usi
阅读全文
摘要:题目传送门 前置知识 珂朵莉树/颜色段均摊 解法 观察到只有 的位置才是重要的,而其他位置上的数具体是什么并不重要,我们只需要关注其大小关系。 第一遍将 的数看做 ,将 的数看做 。第二遍将 的数看做 ,将
阅读全文
摘要:题目传送门 前置知识 Boruvka 算法 解法 考虑 Boruvka 算法。 拆掉绝对值后得到 四个式子。 vector 启发式合并辅助线段树查询的常数过大,无法通过。上述做法的常数在于一条边会被计算两次,考虑优化。
阅读全文
摘要:你怎么知道我不但莫队的奇偶性排序写错了,还把块长、块数写反了
阅读全文
摘要:题目传送门 前置知识 差分 解法 对于移动,我们可以无脑进行交换来保证移动,然后将中途交换的位置再交换回去。 通过手摸不难发现, 能移动到 当且仅当 中不含有 LR 子串。 反向考虑,即
阅读全文
摘要:题目传送门 前置知识 线性基 解法 将操作离线下来,并按 升序排序,接着顺序插入线性基并处理询问。 对于未成功插入线性基的元素 一定能被线性基内选出若干元素得到。故在 能被表出的情况下,设 中成功插入线性基的元素个数为 \(s
阅读全文
摘要:题目传送门 前置知识 线性基 解法 考虑线性基。 因为有可空子序列也参与运算,所以第 小的数是 ;但线性基中是不允许有异或和为 的存在,故线性空间内第 小的数就是所求的第 小的数。 令每一个二进制位仅在它这一位的基底上出现,其他位上的基底
阅读全文
摘要:题目传送门 前置知识 最长不下降子序列 | 权值树状数组及应用 解法 若将 变成严格递增序列,至少需要更改 减去 的最长不下降子序列长度个数。 证明 对于 若都在最终的严格递增序列里,则
阅读全文
摘要:题目传送门 前置知识 将动态问题转化为静态问题 | 树状数组 解法 先将英雄按 升序排序,从而减少一维偏序。 设 表示以 结尾的最长合法序列长度,状态转移方程为 \(f_{i}=\max\limits_{j=1}^{i-1}\{ [a_{j}
阅读全文
摘要:题目传送门 前置知识 动态树分治 | 动态开点线段树 | 标记永久化 解法 考虑动态点分治。 两种操作本质上是将 luogu P6329 【模板】点分树 | 震波 的操作互换了下,将原需支持单点修改、区间查询的数据结构换成需支持区间修改、单点查询的数据结构即可。 区间修改、单点查询的动态开点线段树可
阅读全文
摘要:题目传送门 前置知识 点分治 | 树状数组 解法 维护点对信息,考虑点分治。 本题比 luogu P4149 [IOI2011] Race 多了个前缀查询 。套个支持单点修改、区间查询 的数据结构即可。 直接线段树维护区间 貌似会 TLE,换成树状
阅读全文