摘要: 用处 插入若干条直线,求 \(x=a\) 这条直线与插入的直线的交点的最小/大纵坐标。 插入 以维护最小值为例。 记 \(cal_{u,a}\) 表示把 \(x=a\) 带入直线 \(u\) 的值。 插入一条直线,考虑对一个线段树上的区间维护一个 \(tag\) 表示当前区间最优秀的直线是 \(ta 阅读全文
posted @ 2025-08-14 10:24 咚咚的锵 阅读(22) 评论(0) 推荐(0)
摘要: CDQ分治 CDQ分治是一种可以解决一些与偏序有关的题的算法。 陌上花开 这个题让我们求三维偏序。 我们先想一想二维偏序(逆序对)我们是怎么做的。 Stars 我们先把第一维排序,这样就满足了第一维的限制。 对于第二维,我们可以用一个类似于桶的数据结构来解决第二维。 每次先询问在这个数前小于它的第二 阅读全文
posted @ 2025-08-14 10:18 咚咚的锵 阅读(14) 评论(0) 推荐(0)
摘要: 用处 擅长处理对树上每个节点 \(u\) 求关于 \(u\) 的子树的信息的题目。 分析 一个例子,树上每个点都有一个颜色,要求对树上每个点 \(u\) 求出它子树内不同的颜色个数。 考虑暴力怎么做,\(O(n)\) 对每个 \(u\) 子树进行枚举,总共 \(n\) 个点,就是 \(O(n^2)\ 阅读全文
posted @ 2025-08-14 10:01 咚咚的锵 阅读(10) 评论(0) 推荐(0)
摘要: 求强连通分量 适用于单向边。 维护两个数组 \(dfn_u\) 表示 \(u\) 在搜索树上的访问顺序,\(low_u\) 表示在 \(u\) 的子树里的点经过一条反祖边能到达的点的 \(dfn\) 最小值(只能经过反祖边;但其实经过了前向边是无所谓的,不会影响 \(low_u\) 的值,横叉边是绝 阅读全文
posted @ 2025-08-14 09:42 咚咚的锵 阅读(6) 评论(0) 推荐(0)
摘要: 作用 给 \(n\) 个布尔变量,有 \(m\) 个限制形如:\(i\) 变量为真,则 \(j\) 变量为假、\(i\) 变量为真,则 \(j\) 变量为真…… 求出每个布尔变量的值,使得满足所有限制,或者报告无解。 做法 形如上述的限制,可以建一条 \(i\to j\) 的边,表示一个限制。 但是 阅读全文
posted @ 2025-08-14 09:40 咚咚的锵 阅读(4) 评论(0) 推荐(0)
摘要: KMP 有一个串 \(T\),有一个串 \(S\)。 如果要求 \(S\) 在 \(T\) 中的一些信息,比如出现次数之类的,可以考虑 KMP。 考虑对 \(S\) 的每一个前缀 \(S[1:i]\) 求一个 \(fail_i\) 表示 \(S[1:i]\) 中一个最长的前缀 \(S[1:fail_ 阅读全文
posted @ 2025-08-14 09:22 咚咚的锵 阅读(16) 评论(0) 推荐(0)