CF932G Palindrome Partition

题目描述

给定一个字符串 $s$,请你计算有多少种方式可以将 $s$ 分割成若干子串,使得如果分割后有 $k$ 个子串 $(p_{1},p_{2},p_{3},...,p_{k})$,那么对于所有的 $i$ 满足 $1 \leq i \leq k$,都有 $p_{i} = p_{k-i+1}$,并且 $k$ 是偶数。 由于方案数可能很大,请输出方案数对 $10^{9}+7$ 取模的结果。

输入格式

输入仅一行,一个字符串 $s$,$2 \leq |s| \leq 10^{6}$,保证字符串长度为偶数,且只包含小写拉丁字母。

输出格式

输出一个整数,表示分割字符串的方案数,对 $10^{9}+7$ 取模。

说明/提示

在第一个样例中,唯一的分割方式是 $ab|cd|cd|ab$。 在第二个样例中,字符串可以分割为 $ab|b|ab|ab|ab|ab|b|ab$,或者 $ab|b|abab|abab|b|ab$,或者 $abbab|ab|ab|abbab$。 由 ChatGPT 4.1 翻译