atcoder#ARC104B. [ARC104B] DNA Sequence

[ARC104B] DNA Sequence

题目描述

A, T, C, G から成る長さ N N の文字列 S S があります。

長さの等しい文字列 T1, T2 T_1,\ T_2 が相補的とは、T1 = l |T_1|\ =\ l としたとき、どの 1  i  l 1\ \leq\ i\ \leq\ l についても T1, T2 T_1,\ T_2 i i 文字目の組み合わせが (AT), または (CG) の組み合わせのいずれかであることを指します。(例えば AT の組み合わせのとき、どちらの文字が T1 T_1 に属してもよいです)

S S の連続する空でない部分文字列 T T であって、次の条件を満たすものの個数を求めてください。

  • T T と相補的であるような、T T の文字を並び替えた文字列が存在する。

ただし、文字列として同じであっても S S 内の位置が異なれば違う部分列とみなします。

输入格式

入力は以下の形式で標準入力から与えられる。

N N S S

输出格式

S S の連続する空でない部分文字列 T T であって、条件を満たすものの個数を出力せよ。

题目大意

题目翻译

我们有一条长度为 NN 的 DNA(由 ACGT 四个字母组成的一条链),定义为 SS

定义两个字符匹配当且仅当这两个字符为 A,TC,G 时匹配。

你需要找到 SS 中非空子串 TT 的数量,使得对于每一个 TT,都有一个 TT'TT 的排列,并且和 TT 一一配对。

对于不同位置上的 TT,即便内容相同,也计两次。

样例解释

样例 1 解释

两个 TTGCACGT

样例 2 解释

四个 TT 分别 AT(两个)、TAATAT

数据范围与约定

对于 100%100\% 的数据,1N50001\leq N\leq 5000SS 中只含有 ACGT

4 AGCT
2
4 ATAT
4
10 AAATACCGCG
6

提示

制約

  • 1  N  5000 1\ \leq\ N\ \leq\ 5000
  • S S A, T, C, G のみから成る

Sample Explanation 1

次の 2 2 つの部分文字列が条件を満たします。 - GC (2 2 文字目から 3 3 文字目) は、これを並び替えた CG と相補的です。 - AGCT (1 1 文字目から 4 4 文字目) は、これを並び替えた TCGA と相補的です。

Sample Explanation 2

次の 4 4 つの部分文字列が条件を満たします。 - AT (1 1 文字目から 2 2 文字目) は、これを並び替えた TA と相補的です。 - TA (2 2 文字目から 3 3 文字目) は、これを並び替えた AT と相補的です。 - AT (3 3 文字目から 4 4 文字目) は、これを並び替えた TA と相補的です。 - ATAT (1 1 文字目から 4 4 文字目) は、これを並び替えた TATA と相補的です。