摘要: 先考虑发掘一下这个图的性质,我们考虑如果 \((i, j)\) 可走,\((i + 1, j)\) 不能走,\((i, j + 1)\) 不能走 那么我们可以推出: \[\begin{array}{c} a_{i} + b_{j} \ge 0 \Rightarrow a_i \ge -b_j \\ 阅读全文
posted @ 2025-05-27 15:00 Z_drj 阅读(11) 评论(0) 推荐(0)
摘要: CF 1464 F 考虑求一个如果有交集,那么必定存在的点,这个点就是 LCA 最深的链的 \(d\) 级祖先,记它为 \(u\),其它的 \(u\) 子树内的一定没有 \(u\) 优秀,因为可能 \(u\) 子树内的点到 \(u\) 子树内的路径不合法。那么 \(u\) 子树内的路径都会是它的 \ 阅读全文
posted @ 2025-04-11 14:54 Z_drj 阅读(7) 评论(0) 推荐(0)
摘要: 原题链接 时间这么长,但是走完一圈之后它的速度就不变了。 那么就直接模拟走第一圈就行,后面就是一个周期性问题了。 考虑走第一圈的情况,起点记作 \(s\),那么到点 \(t\) 的速度的分母就是 \(\max\limits_{i = s} ^ t a_i\),走到点 \(t\) 的总时间就是 \(\ 阅读全文
posted @ 2025-04-11 14:54 Z_drj 阅读(11) 评论(0) 推荐(0)
摘要: 引入 在点分治的过程中,它的遍历顺序会遍历每棵子树的重心,而这棵由重心生成的树会产生一棵新的树,便是点分树。 常用来解决树上与树的形态无关的路径问题。 过程 如下图,它的点分树是它自己。 因此可以看出一棵树的点分树可能是它本身。 性质 因为点分树 \(\mathcal{O}(\log n)\) 因此 阅读全文
posted @ 2025-04-11 14:52 Z_drj 阅读(16) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2024-11-25 21:35 Z_drj 阅读(0) 评论(0) 推荐(0)
摘要: 1.引入 1.1. 问题描述 给定一个长度为 \(n(1 \le n \le 10 ^ 5)\) 的字符串和 \(m\) 个模式串 \(s_1, \cdots, s_m\),求问字符串中出现了多少个模式串。 \(\sum s_i \le 10^5\)。 1.2. 解法 考虑当 \(m = 1\) 的 阅读全文
posted @ 2024-07-26 16:13 Z_drj 阅读(15) 评论(0) 推荐(0)
摘要: 引入 在点分治的过程中,它的遍历顺序会遍历每棵子树的重心,而这棵由重心生成的树会产生一棵新的树,便是点分树。 常用来解决树上与树的形态无关的路径问题。 过程 如下图,它的点分树是它自己。 因此可以看出一棵树的点分树可能是它本身。 性质 因为点分树 \(\mathcal{O}(\log n)\) 因此 阅读全文
posted @ 2024-06-07 16:22 Z_drj 阅读(18) 评论(0) 推荐(0)
摘要: 引入 Prüfer 序列可以用于求解序列与树的双射,常用于组合计数问题。 定义 Prüfer 序列指的是每次选取一个编号最小的叶子,删除它,然后在序列中记录它所链接的点,重复以上步骤直到只剩下两个节点。 过程 对树建立 Prüfer 序列 显然可以用堆实现一个朴素的 \(\mathcal{O}(n 阅读全文
posted @ 2024-06-06 10:39 Z_drj 阅读(133) 评论(0) 推荐(0)
摘要: 引入 此算法可以解决图上生成树计数问题。 值得注意的是,矩阵树定理不能用于存在自环的图。 定义 设 \(G\) 是一个图。 记邻接矩阵 \(A(G)_{i,j} = \#e(i,j), \#e(i,j)\) 若 \(G\) 是无向图 记 \(D(G)\) 表示其度数矩阵,\(D(G)\) 满足 \( 阅读全文
posted @ 2024-06-05 17:30 Z_drj 阅读(25) 评论(0) 推荐(0)
摘要: 引入 LGV 引理可以解决图上不相交路径计数问题。 注意,LGV 引理只适用于有向无环图。 定义 \(\omega(P)\) 表示路径 \(P\) 的边权积。 记 \(e(u,v)\) 表示 \(u\) 到 \(v\) 的所有路径的边权积的和 \(e(u,v) = \sum\limits_{S:u 阅读全文
posted @ 2024-06-03 21:31 Z_drj 阅读(120) 评论(0) 推荐(0)