摘要:
这篇博客写得不错 Code 使用Ukkonen算法构建后缀树。 const int inf = 1 << 30; //字符串下标从1开始 template<size_t maxn> struct SuffixTree { int link[maxn << 1], length[maxn << 1], 阅读全文
摘要:
题目大意 给定长为 \(n(1\leq n\leq 10^5)\) 的序列 \(\{a_n\}\),其中 \(1\leq a_i\leq 10^9\)。 \(q(1\leq q\leq 10^5)\) 个询问,每次询问序列的一个区间 \([L,R]\) 内的一个数乘以它在这个区间内出现的次数的最大值 阅读全文
摘要:
题目描述 传送门 一条笔直的公路上有 \(n\) 个旅店,第 \(i\) 个旅店的坐标是 \(i\),每一天早上从旅店出发走最多 \(m\) 个距离,同时固定给你一个常数 \(k\)。 给定 \(q\) 组询问,每次给定 \(u,v\),求早上从旅店 \(u\) 出发到旅店 \(v\),途径不超过 阅读全文
摘要:
题目大意 给定一棵 \(n(2\leq n\leq 5000)\) 个点的树,求一共有多少种方案,删去若干条边后,分裂出的所有树的直径都不超过 \(K\),答案模 \(998244353\)。 题解 设 \(dp[u][i]\) 表示把以 \(u\) 为根的子树分裂成若干棵直径不超过 \(K\) 的 阅读全文
摘要:
题目大意 给定一棵 \(n(n\leq 5000)\) 个点的树,求选出三个不同的点,使得三个点两两之间间距相等的方案数。 题解 设 \(f[u][j]\) 表示以 \(u\) 为根的子树中,到 \(u\) 距离为 \(j\) 的结点的数目,设 \(g[v][j]\) 表示lca在以 \(v\) 为 阅读全文
摘要:
重链剖分是优先选最大的子树的根作为重儿子,而长链剖分是优先选最高的子树作为重儿子,然后把重儿子连成长链。 一个点到根的路径最多经过 \(O(\sqrt n)\) 条长链。 可以证明,长链剖分后,树上任意一个点 \(u\) 的 \(k\) 级祖先所在的长链长度一定 \(\geq k\)。 我们只需像倍 阅读全文
摘要:
题目大意 有 \(T\) 组询问,每组询问给定三个整数 \(c,d,x\) 问有多少对 \((a,b)\) 使得 \(c\times \mathrm{lcm}(a,b) - d\times \gcd(a,b)=x\) \((1\leq t\leq 10^4,1\leq c,d,x\leq 10^7) 阅读全文
摘要:
题目大意 给定两个仅由小写字母组成的字符串 \(x\) 和 \(y\)。 如果一个序列仅包含 \(|x|\) 个 \(0\) 和 \(|y|\) 个 \(1\),则称这个序列为合并序列。 字符串 \(z\) 初始为空,按如下规则由合并序列 \(a\) 生成: 如果 \(a_i=0\),则把 \(x\ 阅读全文
摘要:
题目大意 给定由 \(n(1\leq n\leq 2\cdot 10^5)\) 个正整数组成的数列${a_n}$,你需要把这个数列分成若干个连续段,使得每个连续段内任意两个不同位置上数字的乘积不为完全平方数。初始时你可以把不多于 \(k (0\leq k\leq 20)\) 个位置上的数修改成任意正 阅读全文
摘要:
题目大意 给定一个长为 \(n\) 的序列 \(\{a_n\}\),求出其 \(k\) 阶差分或前缀和序列。 结果的每一项都需要对 \(1004535809\) 取模。\(1\leq n\leq 10^5,0\leq a_i\leq 10^9,1\leq k\leq 10^{2333},k\not\ 阅读全文