yanchang
yanchang
发布于 2025-04-11 / 12 阅读
0
0

蓝桥杯准备(倒数第一天)

闲言

明天比赛了,实际上今天也没怎么学,哈哈哈哈笑死我。帮齐旭搞了个计算软件

对联

问题描述

大年三十,小蓝和爷爷一起贴对联。爷爷拿出了两副对联,每副对联都由 N 个 "福" 字组成,每个 "福" 字要么是正的(用 1 表示),要么是倒的(用 0 表示)。

爷爷说:"小蓝啊,这两副对联可以随意调整 '福' 字的顺序。我们要让上下联的 '福' 字对应位置的 '福气值' 达到最大。'福气值' 的计算方法是:正正相对得 0,正倒相对得 1,倒正相对得 1,倒倒相对得 0。"

小蓝挠了挠头:"爷爷,这不就是二进制异或运算吗?"

爷爷笑着点点头:"没错!现在给你两串 '福' 字的初始排列,你能算出通过最优调整后,最大的总福气值是多少吗?你只需要告诉爷爷最大的总福气值在二进制情况下 1 的个数即可"

小蓝感觉略微有点困难,于是请你帮忙解决这个问题。

输入格式

第一行输入一个整数 N(1≤N≤10^3),表示每幅对联中 "福" 的数量。

第二行输入一个长度为 N 的 01 字符串 S 表示第一幅对联的初始排列。

第三行输入一个长度为 N 的 01 字符串 T 表示第二幅对联的初始排列。

输出格式

输出一个整数表示答案。

样例输入

4
0011
1011

样例输出

3

答案

N=input()#没什么用,估计给c选手用的
str1=input()
str2=input()
a1=str1.count("1")
b1=str1.count("0")
a2=str2.count("1")
b2=str2.count("0")
re1=min(a1,b2)
re2=min(a2,b1)
print(re1+re2)

#当然如果整活的话可以这么写
N,s, t = input(),input(), input()
print(min(s.count('1'), t.count('0')) + min(t.count('1'), s.count('0')))


评论