#4606. F - Gangsta

F - Gangsta

当前没有测试数据。

题目描述

给你一个长度为 nn 的二进制字符串 s1s2sns1s2\ldots sn。二进制字符串的定义是仅由数字 0011 组成的字符串。

对于一个字符串 pp,我们定义函数 f(p)f(p) 为字符串 pp 中出现次数最多的字符的出现次数。例如,f(00110)=3f(00110)=3f(01)=1f(01)=1

你需要求出所有满足 1lrn1 \le l \le r \le n 的子串 slsl+1srslsl+1\ldots sr 对应的 ff 值之和。

数据范围

  • 时间限制:每个测试点 22
  • 内存限制:每个测试点 256256 兆字节

输入格式

输入包含多组测试用例。 第一行输入一个整数 tt1t1041 \le t \le 10^4)—— 测试用例的数量。 接下来依次给出每组测试用例的描述:

  • 每组测试用例的第一行输入一个整数 nn1n21051 \le n \le 2 \cdot 10^5)—— 二进制字符串的长度。
  • 第二行输入一个长度为 nn 的字符串 ss —— 仅由 0011 组成的二进制字符串。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出格式

对于每组测试用例,输出所有子串的 ff 值之和。

样例输入

6
1
0
2
01
4
0110
6
110001
8
10011100
11
01011011100

样例输出

1
3
14
40
78
190

说明/提示

  • 第一个测试用例中,字符串仅有一个子串,f(0)=1f(0)=1,答案为 11
  • 第二个测试用例中,字符串的所有子串为 00010111,对应的 ff 值分别为 111111,答案为 33
  • 第三个测试用例中,字符串的所有子串为 0001010110110110011011111111011011101000,对应的 ff 值分别为 11112222112222111111,答案为 1414