CF666

A.Reberland Linguistics

洛谷链接& CF 链接

注意到最多有 \(2n\) 个串,所以直接枚举所有串的合法性。对于 \(s[i]\) 开头的子串,因为“根”字符串长度不限所以不用管前缀的限制,所以判断其后缀可否用多个“后缀”字符串拼接起来即可。判断是好判断的,直接倒序枚举 \(i\) 并更新判断数组即可。因为要求相邻的“后缀”字符串不能相同,所以会有个小分讨

B.World Tour

洛谷链接& CF 链接

注意到 \(n\leqslant 3000\)、“最短路”、“每条边的权值相同”等词,肯定要先 BFS 预处理出所有点对之间的最短路距离。

枚举路径 \(a\rightarrow b\rightarrow c\rightarrow d\) 时,可以先分别处理出 \(a\rightarrow b\)\(c\rightarrow d\) 的最值,再枚举 \(c,d\) 拼接成完整的路径。但是这个要求四个节点不能相同 就很麻烦,若重了就需要使用次大值,如果又又重了就要换成第三大值。仍是一个分讨

CF 数据好水

C.Codeword

洛谷链接& CF 链接

我们称长度为 \(L\) 的字符串为串 \(t\)。若 \(t\) 的多个子序列都和 \(s\) 相同,那么我们只计入其位置最靠前的相同的子序列(不然会算重)。现在考虑 \(s\)\(n\) 个字符在 \(t\) 串中的位置,显然,字符 \(i\) 与字符 \(i+1\) 之间的所有字符应该都不等于 \(s_{i+1}\),即这段区间每个元素有 \(25\) 种选择;\(s_n\) 后的位置没有限制,就仍是 \(26\) 种选择。假设有 \(k\) 个位置没有限制,那么最终的答案即为

\[\sum_{k=0}^{L-n} 25^{L-n-i} 26^i \binom{L-k-1}{n-1} \]

组合数里面包含了三个变量,不利于计算,所以式子变形为

\[\sum_{k=0}^{L-n} 25^i26^{L-n-k} \binom{n+k-1}{n-1} \]

不管怎样这个式子都优化不了。我们令 \(f(L,n)\) 等于上面这个式子,注意到这个 \(f(L,n)\) 有递推式 \(f(L,n)=26 f(L-1,n)+25^{L-n} \binom{L-1}{n-1}\),而数据范围下本质不同的 \(n\) 只有约 \(\sqrt{V}\) 个,所以离线直接做即可

D.Chain Reaction

洛谷链接& CF 链接

正着考虑感觉情况很乱,考虑正方形的四个端点向外扩散的情况。端点扩散的轨迹显然和正方形四条边延长而成的直线重合,换言之,原图上四个点正确延展的轨迹应和最终正方形的四条直线重合,因为只有四个点直接枚举四条直线即可。因为四条边可能需要去重,所以还需要分讨一下

  • 若是两条横线、两条竖线,那么判断一下直线交点所连成的四边形是否为正方形即可,最终答案只需暴力枚举

  • 若是两条横线、一条竖线,那么有一条横线上一定存在两个点,两种情况分别判断计算即可

  • 若是两条横线、零条竖线,不考虑三点一线的不合法方案,此时正方形的边长已经确定,二分端点移动距离上界判断合法范围内是否存在正确的边长即可。

  • 一条横线一条竖线肯定不合法

横线比竖线少的情况只需旋转九十度计算。

E.Forensic Examination

洛谷链接& CF 链接

广义 SAM + 可持久化线段树合并

考虑只有一个模式串 \(T\),这样只需建立一个 SAM 后跑出串 \(S'\) 的节点 \(u\),直接输出 \(u\)\(endpos\) 集合大小即可。在这之中的问题就是题目不保证 \(\sum |S'|\),即不能每次都在 SAM 上跑一遍 \(S'\)。可以将 \(S_{[l..r]}\) 子串看作前缀的后缀,先跑出每个前缀在 SAM 上的匹配结点与长度,再倍增至 \(S'\) 的等价类结点上。

多个模式串建立广义 SAM 即可,查询可以用可持久化线段树合并求出每个串 \(T_i\) 在该节点的 \(endpos\) 集合大小后区间查询最大值。

posted @ 2025-08-28 18:57  沄沄沄  阅读(5)  评论(0)    收藏  举报