用户工具

站点工具


2020-2021:teams:farmer_john:jjleo:暑假题目汇总

这是本文档旧的修订版!


暑假题目汇总

CF809E

题意

给定$n$个字符串,设$x$是最大的使$s_i$长度为$x$的前缀和$s_j$长度为$x$的后缀相等的数,有$f(s_i,s_j)=x$,求$\sum_{i=1}^n \sum_{j=1}^n {f^2(s_i,s_j)} \pmod {998244353}$。$(1 \le n \le 10^5, 1 \le \sum |s_i| \le 10^6)$

题解

考虑每个前缀有多少个后缀和它相等,可以用广义后缀自动机,也可以把哈希开到$\text{long long}$用$\text{unordered_map}$过。但这样直接算会算重,考虑去重:求出每个字符串的$\operatorname{next}$数组,则将$\operatorname{cnt}[\operatorname{next}[i]]$减去$\operatorname{cnt}[i]$即可。

2020-2021/teams/farmer_john/jjleo/暑假题目汇总.1598002686.txt.gz · 最后更改: 2020/08/21 17:38 由 jjleo