#CF1930D1. 所有子串的贡献和(简单版)

所有子串的贡献和(简单版)

所有子串的贡献和(简单版)

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

对于长度同为 mm 的二进制模式 pp 与二进制字符串 qq,若对每个位置 ii,都存在一个包含 ii 的区间 [l,r][l,r],使字符 pip_i 是 qlql+1…qrq_lq_{l+1}\ldots q_r 的众数,则称 qq 是 pp-good 的。

字符 cc 是一个字符串的众数,当且仅当 cc 的出现次数不少于该字符串长度的一半(向上取整)。因此在偶数长度字符串中,两个字符可以同时是众数。

定义 f(p)f(p) 为所有 pp-good 字符串 qq 中字符 1 的最少数量。

给定长度为 nn 的二进制字符串 ss,求

∑1≤i≤j≤nf(sisi+1…sj).\sum_{1\le i\le j\le n}f(s_is_{i+1}\ldots s_j).

输入格式

第一行包含测试组数 tt(1≤t≤5001\le t\le500)。

每组数据第一行包含 nn(1≤n≤1001\le n\le100),第二行包含长度为 nn、仅由 0 和 1 构成的字符串 ss。

保证所有测试组中 n2n^2 的总和不超过 10410^4。

输出格式

对每组数据输出一个整数,表示所有子串的 ff 值之和。

样例输入 1

4
1
1
2
10
5
00000
20
11110110000000111111

样例输出 1

1
2
0
346

数据范围

子任务编号 分值 特殊限制
1 30 每组 n≤10n\le10
2 每组 n≤40n\le40
3 40 无特殊限制

对于所有数据,1≤t≤5001\le t\le500,1≤n≤1001\le n\le100,且所有测试组中 n2n^2 的总和不超过 10410^4。