CF1750H.BinaryStringForces

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a binary string ss of length nn . We define a maximal substring as a substring that cannot be extended while keeping all elements equal. For example, in the string 1100011111000111 there are three maximal substrings: 1111 , 000000 and 111111 .

In one operation, you can select two maximal adjacent substrings. Since they are maximal and adjacent, it's easy to see their elements must have different values. Let aa be the length of the sequence of ones and bb be the length of the sequence of zeros. Then do the following:

  • If aba \ge b , then replace bb selected zeros with bb ones.
  • If a<ba < b , then replace aa selected ones with aa zeros.

As an example, for 11100001110000 we make it 00000000000000 , for 00110011 we make it 11111111 . We call a string being good if it can be turned into 1111...11111111...1111 using the aforementioned operation any number of times (possibly, zero). Find the number of good substrings among all n(n+1)2\frac{n(n+1)}{2} non-empty substrings of ss .

输入格式

Each test consists of multiple test cases. The first line contains a single integer tt ( 1t1051 \leq t \leq 10^5 ) — the number of test cases. The description of test cases follows.

The first line of each test case contains nn ( 1n21051 \le n \le 2 \cdot 10^5 ) — the length of the string ss .

The second line of each test case contains the binary string ss of length nn .

It is guaranteed that sum of nn across all test cases doesn't exceed 21052 \cdot 10^5 .

输出格式

For each test case, print a single integer — the number of good substrings.

输入输出样例

  • 输入#1

    4
    6
    100011
    3
    101
    5
    11111
    6
    010101

    输出#1

    8
    5
    15
    18

说明/提示

Let's define a substring from index ll to index rr as [l,r][l, r] .

For the first test case, the good substrings are:

  • [1,1][1,1] ,
  • [1,2][1,2] ,
  • [3,6][3,6] ,
  • [4,5][4,5] ,
  • [4,6][4,6] ,
  • [5,5][5,5] ,
  • [5,6][5,6] ,
  • [6,6][6,6] .

In the second test case, all substrings are good except [2,2][2,2] .

In the third test case, all substrings are good.

首页