随笔分类 - 题解
摘要:能字符串哈希为什么要写高科技啊。 点分治之,考虑一个子树 $V$ 的贡献。 考虑如何判断 $i\in V$ 到分治中心 $u$ 的路径能否成为“$S$ 的重复”的前缀 / 后缀。 先序遍历 $V$,动态地维护 $u$ 到当前遍历到的点 $i$ 的路径形成的字符串 $T$, 进入一个点相当于在 $T$
阅读全文
摘要:树上问题全家桶。 以给出的点集建出虚树,然后问题转化为对每个关键点,求其到其他关键点的虚树链上颜色段数之和。 注意虚树的一条边是原树的一条链,所以虚树某条链上的颜色段数并不是简单的虚树上这些点形成的颜色段数。 所以令虚树的边权为其在原树上对应的链上的颜色段数 $-1$,则此时虚树某条链上的颜色段数为
阅读全文
摘要:【模板】读题 本蒟蒻码量上 3k 的第二题 $B$ 公司为了减少成本,回收时从区域 $K$ 到任何一个区域 $X$ 都选择长度最短的路径,如果有多条到某一个区域的最短路径,则选择所有最短路径中该区域的前一区域编号最小的一条路径,称这条路径为 $K$ 到 $X$ 的回收路线。所有的回收路线组成一棵树状
阅读全文
摘要:Shift-And 字符串匹配。 预处理出每种字符可以匹配哪些位置,即预处理 $p_{i,j}$ 表示是否存在 $S_x=i$ 且 $|j-x|\le k$。 $S_x=i$ 使得 $p_{i,j}=1|j\in[\max(x-k,0),\min(x+k,n-1)]$,差分维护即可。 依次匹配 $T
阅读全文
摘要:单点修改,矩阵 kth,考虑树套树。 发现需要套三层,考虑怎么不写权值线段树套二维线段树。 用 KDT 代替掉两层数据结构即可。 KDT 套权值线段树是不可行的,因为 KDT 依赖 push up,需要权值线段树合并。 权值线段树套 KDT 是可行的,外层权值线段树上每个点维护一棵 KDT 表示对应
阅读全文
摘要:lxl 说过邻域信息维护父亲一定死,所以数据结构维护每个点的儿子,特判父亲。 考虑每个点的数据结构需要支持什么操作:全局加一,单点修改,全局异或和。用 01Trie 维护。 与维护最大异或对的 01Trie 不同,从低位到高位建树,每个点上维护子树异或和,修改时 push up。 考虑怎么 push
阅读全文
摘要:按 $0$ 的连续段“分块”,记第 $i$ 个 $0$ 的连续段的左端点为 $l_i$($l_0=1$),则第 $i$ 块为 $[l_{i-1},l_i)$, 即每一块为 $0\cdots 0+s$ 的形式,其中 $s$ 为任意不含 $0$ 的串。 容易发现块内塞满 $9$ 可以产生块长次进位,所以
阅读全文
摘要:树上带修莫队板子。 考虑怎么把序列莫队搬到树上。 设 $u$ 的子树在树的括号序列上对应 $[s_u,t_u]$。 则对于询问 $u,v$,钦定 $s_u<s_v$,分情况讨论: $u=\operatorname{lca}(u,v)$:$[s_u,s_v]$ 中出现一次的点对本次询问有贡献。 $u\
阅读全文
摘要:带修莫队板子题。 在静态莫队的基础上,加一个指针扫描时间轴即可。 令 $c_i$ 表示时间为 $t$ 时 $[l,r]$ 内 $i$ 的出现次数。 指针移动时,令 $c_x\gets c_x+k$ 前,答案 $q\gets q-[c_x=1]+[c_x+k=1]$。 #include <cmath>
阅读全文
摘要:线段树。 若 $i$ 得到满分,则 $\forall j\in[l,r],s_i|s_j$,即 $s_i=\gcd\limits_{j=l}^r s_j$。 即求区间 $\gcd$ 出现次数,可以类比区间 $\min$ 出现次数写。 #include <cstdio> #include <algor
阅读全文
摘要:问一堆集合的交的点数,考虑用 bitset 维护这些集合。 预处理 $b_{x,y}$ 表示 $\{z|\text{dist}(x,z)\le y\}$,先 BFS 出 $a_{x,y}=\{z|\text{dist}(x,z)=y\}$,则 $b_{x,y}=\bigcup\limits_{i=0
阅读全文
摘要:经典动态二维数点。 考虑令 $f_{a_i}=i$,则询问 $l_a\ r_a\ l_b\ r_b$ 相当于询问 $l_a\le f_{b_i}\le r_a,l_b\le i\le r_b$ 的 $i$ 的个数。 树套树维护 $f_{b_i}$,交换相当于单点修改。 平板电视真的很好写。 #inc
阅读全文
摘要:题意:求 $K^x\equiv 1\pmod M$ 的最小正整数解,没保证 $M$ 是质数。 这题是蓝的,考虑怎么不用 exBSGS。 注意到 $K\bot M$ 时,仍有欧拉定理 $K^{\varphi(M)}\equiv 1\pmod M$,此时直接 BSGS 即可。 否则 $K^x\bmod
阅读全文
摘要:题意:求 $A^x\equiv B\pmod P$ 的最小正整数解。 BSGS 板子。 由欧拉定理 $a^b\equiv a^{b\bmod\varphi(p)}\pmod p$ 可知,$a^x$ 有周期 $\varphi(p)=p-1$,即原方程在 $[1,p)$ 上一定有解。 构造 $x=i\l
阅读全文
摘要:二分这个最大长度,设当前二分中点为 $k$。 把所有长度为 $k$ 的子串算出来,扔进哈希表里。 然后如果某哈希值的出现次数 $\ge m$,则 $k$ 合法。 复杂度 $O(n\log n)$,可以过掉。 #include <cstdio> #include <cstring> #include
阅读全文
摘要:二分这个最大长度,设当前二分中点为 $k$。 把所有长度为 $k$ 的子串算出来,扔进哈希表里。 然后如果某哈希值的出现次数 $\ge m$,则 $k$ 合法。 复杂度 $O(n\log n)$,可以过掉。 #include <cstdio> #include <cstring> #include
阅读全文
摘要:$\operatorname{LCP}(a,b)\ge k\Leftrightarrow$ $\forall i\le k,a_i=b_i$。 维护出每个后缀 $s_i$ 长度为 $k$ 的前缀 $a_i$。 然后就是数区间 $a_i$ 相同对数,莫队维护。 $\sqrt{n^2m}=n\sqrt
阅读全文
摘要:基本就是 CF558E。 注意到字符集很小,考虑维护出区间每个字母出现次数,然后直接重排。 显然,若出现奇数次的字母 $>1$ 个,则无法操作。 按字典序依次重排,如果剩下一个出现奇数次的字母就放在中间。 区间覆盖区间查询,线段树维护。 #include <cstdio> #include <cct
阅读全文
摘要:权值线段树。 finally let's find the minimum among counted maximums. 最大值最小。二分。设当前二分中点为 $k$。 容易发现 $h_i\le k$ 的试管才会造成贡献,若 $\sum\limits_{h_i\le k}k-h_i\ge v$ 则
阅读全文
摘要:我永远喜欢数据结构。 显然 $l,r$ 的答案 $\in\{\sum\limits_{i=l}^ra_i-zp|z\in\mathbf{N}\}$,考虑求出 $z$。 线段树。每个节点上维护 $k_i$ 表示 $z=i$ 时,进入该节点时的当前答案最小值, 显然,若进入该节点时当前答案为 $g$,则
阅读全文

浙公网安备 33010602011771号