CF1437B.Reverse Binary Strings

普及-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given a string ss of even length nn. String ss is binary, in other words, consists only of 0's and 1's.

String ss has exactly n2\frac{n}{2} zeroes and n2\frac{n}{2} ones (nn is even).

In one operation you can reverse any substring of ss. A substring of a string is a contiguous subsequence of that string.

What is the minimum number of operations you need to make string ss alternating? A string is alternating if si≠si+1s_i \neq s_{i + 1} for all ii. There are two types of alternating strings in general: 01010101... or 10101010...

给你一个长度为偶数 nn 的字符串 ss。字符串 ss 是二进制的,即仅由字符 0 和 1 组成。

字符串 ss 恰好包含 n2\frac{n}{2} 个 0 和 n2\frac{n}{2} 个 1(nn 为偶数)。

在一次操作中,你可以翻转 ss 的任意一个子串。字符串的子串是指该字符串的一个连续子序列。

你需要多少次最少的操作次数,才能使字符串 ss 变为交替字符串?若对所有 ii 均满足 si≠si+1s_i \neq s_{i + 1},则称该字符串为交替字符串。通常存在两种交替字符串:01010101... 或 10101010...

输入格式

The first line contains a single integer tt (1≤t≤10001 \le t \le 1000) — the number of test cases.

The first line of each test case contains a single integer nn (2≤n≤1052 \le n \le 10^5; nn is even) — the length of string ss.

The second line of each test case contains a binary string ss of length nn (si∈s_i \in {0, 1}). String ss has exactly n2\frac{n}{2} zeroes and n2\frac{n}{2} ones.

It's guaranteed that the total sum of nn over test cases doesn't exceed 10510^5.

第一行包含一个整数 tt(1≤t≤10001 \le t \le 1000)—— 测试用例的数量。

每个测试用例的第一行包含一个整数 nn(2≤n≤1052 \le n \le 10^5;nn 为偶数)—— 字符串 ss 的长度。

每个测试用例的第二行包含一个长度为 nn 的二进制字符串 ss(si∈{0,1}s_i \in \{0, 1\})。字符串 ss 恰好包含 n2\frac{n}{2} 个 0 和 n2\frac{n}{2} 个 1。

保证所有测试用例中 nn 的总和不超过 10510^5。

输出格式

For each test case, print the minimum number of operations to make ss alternating.

对于每个测试用例,输出使 ss 变成交替字符串所需的最少操作次数。

输入输出样例

  • 输入#1

    3
    2
    10
    4
    0110
    8
    11101000

    输出#1

    0
    1
    2

说明/提示

In the first test case, string 10 is already alternating.

In the second test case, we can, for example, reverse the last two elements of ss and get: 0110 →\rightarrow 0101.

In the third test case, we can, for example, make the following two operations:

  1. 11101000 →\rightarrow 10101100;
  2. 10101100 →\rightarrow 10101010.

在第一个测试用例中,字符串 10 已经是交替的。

在第二个测试用例中,例如,我们可以反转 ss 的最后两个元素,得到:0110 →\rightarrow 0101。

在第三个测试用例中,例如,我们可以执行以下两次操作:

  1. 11101000 →\rightarrow 10101100;
  2. 10101100 →\rightarrow 10101010。

输入解题思路,AI测评打分。不知道怎么写?

首页