摘要: 前置知识:洛谷P4198 楼房重建 在本题中,需统计 $\mathrm{s[i]}>\max_{j=1}^{i-1}s[j]$ 的 $\mathrm{i}$ 的个数. 1.$\mathrm{mx[i]}$ 为区间最大值 2.$\mathrm{cnt[i]}$ 为在考虑区间 $[\mathrm{l}, 阅读全文
posted @ 2021-09-14 08:59 guangheli 阅读(27) 评论(0) 推荐(0)
摘要: 做法一: 线段树合并. 令 $\mathrm{dp[x][i]}$ 表示以 $\mathrm{x}$ 节点为根的子树全部被覆盖且延伸到了深度为 $\mathrm{i}$ 的祖先. 考虑 $\mathrm{x},\mathrm{y}$ 两个子树如何合并: 有 $\mathrm{dp'[x][i]=dp 阅读全文
posted @ 2021-09-14 08:01 guangheli 阅读(50) 评论(0) 推荐(0)
摘要: KMP 给定串 $\mathrm{s}$ 与 $\mathrm{t}$,求 $\mathrm{t}$ 在 $\mathrm{s}$ 中所有出现位置. 这个问题显然可以用 $\mathrm{SAM}/\mathrm{AC}$ 自动机处理,但 $\mathrm{KMP}$ 的处理更简单一些. 定义串 $ 阅读全文
posted @ 2021-09-13 09:43 guangheli 阅读(38) 评论(0) 推荐(0)
摘要: 虚树 在处理一些树上的询问时,总询问点数为 $O(n)$, 但询问次数可能很多, 这时就需要虚树. 虚树的思想是尽可能用少的节点将询问点数串联起来. 对于询问点,虚树建立后只包含询问点之间的 $\mathrm{lca}$ 以及询问点本身. 虚树的构建 先对所有询问点按照 $\mathrm{dfs}$ 阅读全文
posted @ 2021-09-11 09:01 guangheli 阅读(80) 评论(0) 推荐(0)
摘要: segment tree beats 1.线段树维护历史最值 例题:洛谷P4314 CPU监控 令 $(x,y)$ 标记表示将线段树当前区间所有数字变成 $\mathrm{max(a[i]+x, y)}$ 通过 $(x,y)$ 标记可以实现区间赋值,区间加法,以及 $\mathrm{max(a[i] 阅读全文
posted @ 2021-09-09 01:59 guangheli 阅读(122) 评论(0) 推荐(0)
摘要: dsu on tree 在处理子树询问时,子树与子树之间总是相互干扰. 常用的处理手法有线段树合并,dfs 序等来规避子树之间的干扰. dsu on tree 则是利用的树链剖分轻重链的思想在多一个 $O(\log n)$ 的复杂度下避开子树之间干扰 算法模板: void dfs2(int x, i 阅读全文
posted @ 2021-09-07 19:07 guangheli 阅读(102) 评论(0) 推荐(1)
摘要: Educational Codeforces Round 82 (Rated for Div. 2) 来源:https://codeforces.com/contest/1303 A.Erasing Zeroes 找左右两端的 1,然后统计中间 0 的个数即可. #include <cstdio> 阅读全文
posted @ 2021-09-07 17:42 guangheli 阅读(39) 评论(0) 推荐(0)
摘要: 李超线段树 用途:给定 $\mathrm{n}$ 个 $\mathrm{y}=\mathrm{kx}+\mathrm{b}$ 形式的线段,问 $\mathrm{x}=\mathrm{x[0]}$ 与哪条线段交点的纵坐标值最大. 对于李超树的每一个区间,维护这条区间的 “优势线段”,即区间 $\mat 阅读全文
posted @ 2021-09-06 17:06 guangheli 阅读(94) 评论(0) 推荐(0)