题目名称 3509. [NOIP 2020]字符串匹配
输入输出 2020string.in/out
难度等级 ★★★☆
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 25
题目来源 Gravatarsyzhaoss 于2020-12-05加入
开放分组 全部用户
提交状态
分类标签
倍增法 字符串 字符串哈希
查看题解 分享题解
通过:7, 提交:28, 通过率:25%
Gravatarop_组撒头屯 100 1.795 s 129.24 MiB C++
Gravatar遥时_彼方 100 2.052 s 221.74 MiB C++
GravatarTwilight_Dark 100 2.404 s 4.30 MiB C++
Gravatar该账号已注销 100 2.535 s 57.14 MiB C++
Gravataryrtiop 100 3.988 s 72.14 MiB C++
GravatarLfc_HeSn 100 4.047 s 32.77 MiB C++
GravatarLfc_HeSn 100 7.746 s 240.86 MiB C++
Gravatar遥时_彼方 92 4.519 s 219.28 MiB C++
Gravatar遥时_彼方 88 2.877 s 219.28 MiB C++
Gravatar遥时_彼方 88 2.879 s 219.29 MiB C++
本题关联比赛
近5年noip/csp题目回顾
关于 字符串匹配 的近10条评论(全部评论)
Gravataryrtiop
2021-10-13 20:33 2楼
这题一星是认真的么...
Gravatar遥时_彼方
2021-02-03 18:03 1楼

3509. [NOIP 2020]字符串匹配

★★★☆   输入文件:2020string.in   输出文件:2020string.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目描述】

小 C 学习完了字符串匹配的相关内容,现在他正在做一道习题。

对于一个字符串 S,题目要求他找到 S 的所有具有下列形式的拆分方案数:S = ABC,S = ABABC,S = ABAB$\cdots$ABC,其中 A,B,C 均是非空字符串,且 A 中出现奇数次的字符数量不超过 C 中出现奇数次的字符数量。

更具体地,我们可以定义 AB 表示两个字符串 A, B 相连接,例如 A = aab,B = ab,则 AB = aabab。

并递归地定义 A$^1$ = A,A$^n$ = A$^{n-1}$A($n\geq 2$ 且为正整数)。例如 A = abb,则A$^3$ = abbabbabb。

则小 C 的习题是求 S = (AB)$^i$C 的方案数,其中 F(A) ≤ F(C),F(S) 表示字符串 S中出现奇数次的字符的数量。两种方案不同当且仅当拆分出的 A、B、C 中有至少一个字符串不同。

小 C 并不会做这道题,只好向你求助,请你帮帮他。

【输入格式】

本题有多组数据,输入文件的第一行一个正整数$T$表示数据组数。

每组数据仅一行一个字符串$S$,意义见题目描述。$S$仅由英文小写字母构成。

【输出格式】

对于每组数据输出一行一个整数表示答案。

【样例1输入】

3
nnrnnr
zzzaab
mmlmmlo

【样例1输出】

8
9
16

【样例1解释】

1. A=n,B=nr,C=nnr。

2. A=n,B=nrn,C=nr。

3. A=n,B=nrnn,C=r。

4. A=nn,B=r,C=nnr。

5. A=nn,B=rn,C=nr。

6. A=nn,B=rnn,C=r。

7. A=nnr,B=n,C=nr。

8. A=nnr,B=nn,C=r。

【样例2输入】

5
kkkkkkkkkkkkkkkkkkkk
lllllllllllllrrlllrr
cccccccccccccxcxxxcc
ccccccccccccccaababa
ggggggggggggggbaabab

【样例2输出】

156
138
138
147
194

【测试样例】

water.zip

【数据规模与约定】

对于所有测试点,保证$1\leq T\leq 5,1\leq |S|\leq 2^{20}$。

【来源】

NOIP 2020 Task 2