Paranoid String

题意翻译

对一个字符串,有以下两种操作: - 将子串 01 替换为 1 - 将子串 10 替换为 0 $t$ 组数据,每组给定一个长度为 $n$ 的 01 串 $S$ 。求 $S$ 的子串个数,满足经过若干次操作,可将该子串长度变为 $1$ 。 $1\le t\le 1000,1\le n\le 2\times 10^5,\sum n\le 2\times 10^5$

题目描述

Let's call a binary string $ T $ of length $ m $ indexed from $ 1 $ to $ m $ paranoid if we can obtain a string of length $ 1 $ by performing the following two kinds of operations $ m-1 $ times in any order : - Select any substring of $ T $ that is equal to 01, and then replace it with 1. - Select any substring of $ T $ that is equal to 10, and then replace it with 0.For example, if $ T = $ 001, we can select the substring $ [T_2T_3] $ and perform the first operation. So we obtain $ T = $ 01. You are given a binary string $ S $ of length $ n $ indexed from $ 1 $ to $ n $ . Find the number of pairs of integers $ (l, r) $ $ 1 \le l \le r \le n $ such that $ S[l \ldots r] $ (the substring of $ S $ from $ l $ to $ r $ ) is a paranoid string.

输入输出格式

输入格式


The first line contains an integer $ t $ ( $ 1 \le t \le 1000 $ ) — the number of test cases. The description of test cases follows. The first line of each test case contains a single integer $ n $ ( $ 1 \le n \le 2 \cdot 10^5 $ ) — the size of $ S $ . The second line of each test case contains a binary string $ S $ of $ n $ characters $ S_1S_2 \ldots S_n $ . ( $ S_i = $ 0 or $ S_i = $ 1 for each $ 1 \le i \le n $ ) It is guaranteed that the sum of $ n $ over all test cases doesn't exceed $ 2 \cdot 10^5 $ .

输出格式


For each test case, output the number of pairs of integers $ (l, r) $ $ 1 \le l \le r \le n $ such that $ S[l \ldots r] $ (the substring of $ S $ from $ l $ to $ r $ ) is a paranoid string.

输入输出样例

输入样例 #1

5
1
1
2
01
3
100
4
1001
5
11111

输出样例 #1

1
3
4
8
5

说明

In the first sample, $ S $ already has length $ 1 $ and doesn't need any operations. In the second sample, all substrings of $ S $ are paranoid. For the entire string, it's enough to perform the first operation. In the third sample, all substrings of $ S $ are paranoid except $ [S_2S_3] $ , because we can't perform any operations on it, and $ [S_1S_2S_3] $ (the entire string).