Вам дана бинарная строка $$$s$$$ длины $$$n$$$. Определим максимальную подстроку как подстроку, которую нельзя расширить, сохраняя при этом все элементы равными. Например, в строке $$$11000111$$$ есть три максимальные подстроки: $$$11$$$, $$$000$$$ и $$$111$$$.
За одну операцию можно выбрать две максимальные соседние подстроки. Поскольку они максимальные и соседние, легко видеть, что их элементы должны иметь разные значения. Пусть $$$a$$$ — длина последовательности единиц, а $$$b$$$ — длина последовательности нулей. Затем сделайте следующее:
Например, для $$$1110000$$$ мы превратим в $$$0000000$$$, для $$$0011$$$ мы превратим в $$$1111$$$. Мы называем строку хорошей, если ее можно превратить в $$$1111...1111$$$ с помощью применения вышеупомянутой операции произвольное количество раз (возможно, ноль). Найдите количество хороших подстрок среди всех $$$\frac{n(n+1)}{2}$$$ непустых подстрок $$$s$$$.
Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит единственное целое число $$$t$$$ ($$$1 \leq t \leq 10^5$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — длину строки $$$s$$$.
Вторая строка каждого набора входных данных содержит бинарную строку $$$s$$$ длины $$$n$$$.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$2 \cdot 10^5$$$.
Для каждого теста выведите одно целое число — количество хороших подстрок.
4610001131015111116010101
8 5 15 18
Определим подстроку от индекса $$$l$$$ до индекса $$$r$$$ как $$$[l, r]$$$.
Для первого теста хорошими подстроками являются:
Во втором наборе входных данных все подстроки хорошие, кроме $$$[2,2]$$$.
В третьем наборе входных данных все подстроки хорошие.
Название |
---|