闲言
明天比赛了,实际上今天也没怎么学,哈哈哈哈笑死我。帮齐旭搞了个计算软件
对联
问题描述
大年三十,小蓝和爷爷一起贴对联。爷爷拿出了两副对联,每副对联都由 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')))