N≤3N\le3N≤3 时答案恒为 1。
先考虑 cAB=Bc_{\mathrm{AB}}=\texttt{B}cAB=B:若 cBB=Bc_{\mathrm{BB}}=\texttt{B}cBB=B,始终只有一个字符串;否则若 cBA=Ac_{\mathrm{BA}}=\texttt{A}cBA=A,恰能得到所有以 AB 开头、以 B 结尾的字符串,答案为 2N−32^{N-3}2N−3;若 cBA=Bc_{\mathrm{BA}}=\texttt{B}cBA=B,可达字符串还要求不含连续两个 A,数量满足初值均为 1 的 Fibonacci 递推,答案为 FN−2F_{N-2}FN−2。
AB
B
A
当 cAB=Ac_{\mathrm{AB}}=\texttt{A}cAB=A 时,同时交换 A/B 并反转字符串即可化为前一种情况,此时分别检查 cAAc_{\mathrm{AA}}cAA 与 cBAc_{\mathrm{BA}}cBA。
A/B
预处理 Fibonacci 并快速幂即可,时间复杂度为 O(N+logN)O(N+\log N)O(N+logN),空间复杂度为 O(N)O(N)O(N)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户