CF1694B.Paranoid String
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
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 [T2T3] 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≤l≤r≤n such that S[l…r] (the substring of S from l to r ) is a paranoid string.
输入格式
The first line contains an integer t ( 1≤t≤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≤n≤2⋅105 ) — the size of S .
The second line of each test case contains a binary string S of n characters S1S2…Sn . ( $S_i = $ 0 or $S_i = $ 1 for each 1≤i≤n )
It is guaranteed that the sum of n over all test cases doesn't exceed 2⋅105 .
输出格式
For each test case, output the number of pairs of integers (l,r) 1≤l≤r≤n such that S[l…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 [S2S3] , because we can't perform any operations on it, and [S1S2S3] (the entire string).