红石线路重构

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

红石线路重构

题目背景

FushengFusheng 是一位热衷于红石科技的 MinecraftMinecraft 玩家。某天,他在地下矿洞中发现了一条古老的红石电路线路。

这条线路由 nn 个红石中继器串联而成,每个中继器有两种状态:

  • 0 表示红石信号未激活(暗淡状态)
  • 1 表示红石信号已激活(发光状态)

由于年代久远,这条电路已经部分损坏。FushengFusheng 想要修复它,使整条线路达到统一状态——要么全部激活(全11),要么全部关闭(全00)。

幸运的是,FushengFusheng 在附近找到了一些红石比较器红石火把。利用这些道具,他可以对电路的某个区间进行"多数原则修复":

  1. 红石比较器修复:选择区间 [i,j][i, j],如果该区间内激活的中继器(11)数量多于未激活的(00),就可以用强信号将整个区间都激活为 11
  2. 红石火把反转修复:选择区间 [i,j][i, j],如果该区间内未激活的中继器(00)数量多于激活的(11),就可以切断信号将整个区间都关闭为 00

每次使用道具进行修复都会增加 FushengFusheng 收集材料的时间。他想知道:最少需要使用多少次道具才能让整条红石线路达到统一状态?

如果无论如何都无法修复,请输出 1-1(可能需要求助SuAnderderSuAnderder获取更高级的红石科技)。

题目描述

FushengFusheng 有一个长度为nn的字符串SS,仅包含0011两种字符。

TaTa 每次可以选择两个索引 iijj (1ijn) (1\leq i<j\leq n),并满足以下条件之一:

1、如果区间[i,j][i,j]​中11的数量大于00的数量,可以把此区间的所有数字都变成11

2、如果区间[i,j][i,j]00的数量大于11的数量,可以把此区间的所有数字都变成00

他想知道把整个串变成全00或者全11的最少操作次数,如果无解,输出1-1

输入格式

第一行包含一个整数 TT,表示测试用例组数(1T201 ≤ T ≤ 20

第二行包含两部分,前半部分一个整数 nn,表示字符串长度,后半部分为长度为nn的字符串SS,保证输入只含有0011

1n2×1051 ≤ n ≤ 2 \times 10^5

输出格式

每行一个整数表示最少操作次数,若无解则输出1-1

示例数据

输入样例:

2
3 011
2 11

输出样例:

1
0

样例解释:

  • 第一组:初始状态 "011",选择区间 [1,3][1, 3],由于该区间有 2211110011 的数量更多,可以将整个区间变为 "111",操作 11 次完成。
  • 第二组:初始状态 "11",已经是全 11 状态,无需操作,答案为 00

限制

  • 时间限制:1000ms
  • 内存限制:256MB

2025年中国民航大学程序设计天梯竞赛

未参加
状态
已结束
规则
IOI
题目
20
开始于
2025-10-12 18:00
结束于
2025-10-12 21:00
持续时间
3 小时
主持人
参赛人数
192