AT_arc156_a.[ARC156A] Non-Adjacent Flip

普及-

通过率:0%

AC君温馨提醒

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

题目描述

有 NN 枚编号为 11 到 NN 的硬币,每枚硬币有正反两面,可以区分。硬币的正反面状态由一个长度为 NN 的字符串 SS 表示,SS 的第 ii 个字符为 1 时表示第 ii 枚硬币正面朝上,为 0 时表示反面朝上。

你可以进行如下操作,次数不限(可以为 00 次):

  • 选择满足 1≤i<j≤N1\leq i<j\leq N 且 j−i≥2j-i\geq 2 的整数对 (i,j)(i, j),将第 ii 枚和第 jj 枚硬币同时翻面。

请判断是否可以通过若干次操作将所有硬币都翻到反面。如果可以,请求出所需操作次数的最小值;如果不可以,输出 −1-1。

有 TT 组测试数据,请分别作答。

输入格式

输入通过标准输入给出,格式如下:

TT
case1\mathrm{case}_1
⋮\vdots
caseT\mathrm{case}_T

每组数据格式如下:

NN SS

输出格式

输出共 TT 行。对于第 ii 个测试用例,如果可以通过操作将所有硬币都翻到反面,输出最小操作次数;否则输出 −1-1。

输入输出样例

  • 输入#1

    5
    3
    101
    6
    101101
    5
    11111
    6
    000000
    30
    111011100110101100101000000111

    输出#1

    1
    2
    -1
    0
    8

说明/提示

限制

  • 1≤T≤2×1051\leq T\leq 2\times 10^5
  • 3≤N≤2×1053\leq N\leq 2\times 10^5
  • SS 是由 0 和 1 组成的长度为 NN 的字符串
  • 输入的所有数均为整数
  • 所有测试用例中 NN 的总和不超过 2×1052\times 10^5

样例解释 1

对于第 11 个测试用例,选择 (i,j)=(1,3)(i, j)=(1, 3) 操作 11 次即可将所有硬币翻到反面。对于第 22 个测试用例,先选择 (i,j)=(1,3)(i, j)=(1, 3) 操作 11 次,再选择 (i,j)=(4,6)(i, j)=(4, 6) 操作 11 次,共需 22 次操作。对于第 33 个测试用例,无法将所有硬币翻到反面,应输出 −1-1。对于第 44 个测试用例,所有硬币已是反面,无需操作。

由 ChatGPT 4.1 翻译

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

首页