#ATarc104b. [ARC104B] DNA Sequence

[ARC104B] DNA Sequence

题目描述

有一个由 ATCG 组成的长度为 NN 的字符串 SS

长度相等的字符串 T1T_1T2T_2 被称为“互补的”,当 T1=l|T_1| = l 时,对于任意 1il1 \leq i \leq lT1T_1T2T_2 的第 ii 个字符的组合要么是(AT),要么是(CG)的组合(例如,AT 的组合时,无论哪个字符属于 T1T_1 都可以)。

请计算 SS 的所有连续且非空的子串 TT 中,满足以下条件的子串个数:

  • 存在一个将 TT 的字符重新排列后的字符串,使其与 TT 互补。

注意,即使字符串内容相同,只要在 SS 中的位置不同,也视为不同的子串。

输入格式

输入以如下格式从标准输入读入:

NN SS

输出格式

输出 SS 的所有连续且非空的子串 TT 中,满足条件的子串个数。

样例 1

输入

4 AGCT

输出

2

样例 2

输入

4 ATAT

输出

4

样例 3

输入

10 AAATACCGCG

输出

6

说明/提示

限制条件

  • 1N50001 \leq N \leq 5000
  • SS 仅由 ATCG 组成

样例解释 1

有如下 22 个子串满足条件:

  • GC(第 22 个字符到第 33 个字符),将其重新排列为 CG 后是互补的。
  • AGCT(第 11 个字符到第 44 个字符),将其重新排列为 TCGA 后是互补的。

样例解释 2

有如下 44 个子串满足条件:

  • AT(第 11 个字符到第 22 个字符),将其重新排列为 TA 后是互补的。
  • TA(第 22 个字符到第 33 个字符),将其重新排列为 AT 后是互补的。
  • AT(第 33 个字符到第 44 个字符),将其重新排列为 TA 后是互补的。
  • ATAT(第 11 个字符到第 44 个字符),将其重新排列为 TATA 后是互补的。

由 ChatGPT 4.1 翻译