P10101 [ROIR 2023] 一个普通的字符串问题 (Day 2)
题目背景
翻译自 [ROIR 2023 D2T4](https://neerc.ifmo.ru/school/archive/2022-2023/ru-olymp-regional-2023-day2.pdf)。
如果对于任意长度为 $2$ 的字符串 $u$,字符串 $s$ 中 $u$ 的出现次数与字符串 $t$ 中 $u$ 的出现次数相同,则两个字符串 $s$ 和 $t$ 称为等效字符串。因此,字符串 `aaaba`、`abaaa` 和 `baaab` 彼此等效(字符串 `aa` 出现两次,字符串 `ab` 出现一次,字符串 `ba` 出现一次,字符串 `bb` 不作为子串出现),而字符串 `cff` 和 `ccf` 则不等效。一个字符串和它本身是等效的。
题目描述
在这个问题中,你将会得到 $Q$ 个由字符 `a`、`b` 和 `c` 组成的字符串,对于每个字符串,需要计算与它等效的由字符 `a`、`b` 和 `c` 组成的非空字符串的数量。由于这个数量可能非常大,所以要求对 $10^9 + 7$ 取余。
输入格式
第一行输入一个数 $G$,表示当前子任务的编号。在样例中 $G=0$,本题另设一个分值为 $0$ 的 Subtask 0 来存储样例数据。
第二行输入一个整数 $q$。
接下来 $q$ 行,每行一个字符串。
输出格式
对于每个字符串输出一行一个整数表示答案,记得取模 $10^9+7$。
说明/提示
样例说明:
- 字符串 `abaa` 等效于字符串 `abaa`、`aaba`、`baab`;
- 字符串 `abca` 等效于字符串 `abca`、`bcab`、`cabc`;
- 字符串 `ccbca` 等效于字符串 `ccbca` 和 `cbcca`;
- 字符串 `bacc` 只等效于字符串 `bacc`。
本题使用捆绑测试。
$n_i$ 表示第 $i$ 个输入字符串的长度,$L$ 表示所有字符串的长度之和,$w$ 表示所有查询中最大(未取模)的答案。
| 子任务编号 | 分值 | 特殊性质 |
| :----------: | :----------: | :----------: |
| $0$ | $0$ | 输入数据与样例相同 |
| $1$ | $11$ | $s$ 中不含 `c` |
| $2$ | $13$ | $s$ 中 `a` 与 `c` 不相邻 |
| $3$ | $11$ | $n_i\le13$ |
| $4$ | $10$ | $L\le40$ |
| $5$ | $9$ | $L\le60$ |
| $6$ | $13$ | $L\le10^5,w\le100$ |
| $7$ | $33$ | 无 |
对于 $100\%$ 数据,$1\le q\le10^5$,$L\le10^6$。