一、题目
1、题目描述
2、输入输出
2.1输入
2.2输出
3、原题链接
1615C - Menorah
二、解题报告
1、思路分析
- 两次连续操作相当于交换两位
- 奇数次操作, 改变了01频数
- 01频数是否能一样
- -> -1
- 否则就是调整到该在的位置的最小操作次数
- 不一样的位置一定是偶数个,否则01频数不相等
- 那么答案就是不一样的位置个数
2、复杂度
时间复杂度: O(N)空间复杂度:O(N)
3、代码详解
T = int(input())
ans = []
for _ in range(T):
N = int(input())
a = input()
b = input()
ca, cb = a.count('1'), b.count('1')
res = -1
if ca == cb:
res = 0
for i in range(N):
res += (a[i] != b[i])
if N - ca + 1 == cb:
t = 0
f = False
for i in range(N):
t += (a[i] == b[i])
f = f or (a[i] == '1')
if f:
res = min(res, t) if ~res else t
ans.append(res)
print('\n'.join(map(str, ans)))