红石线路重构
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
红石线路重构
题目背景
是一位热衷于红石科技的 玩家。某天,他在地下矿洞中发现了一条古老的红石电路线路。
这条线路由 个红石中继器串联而成,每个中继器有两种状态:
- 0 表示红石信号未激活(暗淡状态)
- 1 表示红石信号已激活(发光状态)
由于年代久远,这条电路已经部分损坏。 想要修复它,使整条线路达到统一状态——要么全部激活(全),要么全部关闭(全)。
幸运的是, 在附近找到了一些红石比较器和红石火把。利用这些道具,他可以对电路的某个区间进行"多数原则修复":
- 红石比较器修复:选择区间 ,如果该区间内激活的中继器()数量多于未激活的(),就可以用强信号将整个区间都激活为 。
- 红石火把反转修复:选择区间 ,如果该区间内未激活的中继器()数量多于激活的(),就可以切断信号将整个区间都关闭为 。
每次使用道具进行修复都会增加 收集材料的时间。他想知道:最少需要使用多少次道具才能让整条红石线路达到统一状态?
如果无论如何都无法修复,请输出 (可能需要求助获取更高级的红石科技)。
题目描述
有一个长度为的字符串,仅包含和两种字符。
每次可以选择两个索引 和 ,并满足以下条件之一:
1、如果区间中的数量大于的数量,可以把此区间的所有数字都变成。
2、如果区间中的数量大于的数量,可以把此区间的所有数字都变成。
他想知道把整个串变成全或者全的最少操作次数,如果无解,输出。
输入格式
第一行包含一个整数 ,表示测试用例组数()
第二行包含两部分,前半部分一个整数 ,表示字符串长度,后半部分为长度为的字符串,保证输入只含有、。
()
输出格式
每行一个整数表示最少操作次数,若无解则输出
示例数据
输入样例:
2
3 011
2 11
输出样例:
1
0
样例解释:
- 第一组:初始状态 "011",选择区间 ,由于该区间有 个 和 个 , 的数量更多,可以将整个区间变为 "111",操作 次完成。
- 第二组:初始状态 "11",已经是全 状态,无需操作,答案为 。
限制
- 时间限制:1000ms
- 内存限制:256MB