[CoE R4 A/Stoi2041] 娘子
题目背景
【经典】周杰伦全MV 【198P】
题目描述
给定两个长度均为 n n n 的 0 0 0, 1 1 1 序列 a a a, b b b,首先,你可以选择一些 a i a_i ai 取反,即 0 0 0 变为 1 1 1, 1 1 1 变为 0 0 0,然后,任意排列序列 a a a。
要求上述过程结束后 a i a_i ai 等于 b i b_i bi,求取反的最少次数。
输入格式
第一行一个正整数 n n n。第二行 n n n 个数字表示序列 a a a。第三行 n n n 个数字表示序列 b b b。
输出格式
一个整数表示答案。
样例 #1
样例输入 #1
3
110
101
样例输出 #1
0
样例 #2
样例输入 #2
5
10010
00100
样例输出 #2
1
提示说明
样例解释
输入 #1:将 a = 110 a = 110 a=110 重排为 a = 101 a = 101 a=101 即可达到题目要求,故取反的最少次数为 0 0 0。
输入 #2:将 a = 10010 a = 10010 a=10010 的第四位取反(从左往右计数),得 a = 10000 a=10000 a=10000,然后再重排得到 a = 00100 a=00100 a=00100 即可达到题目要求,故取反的最少次数为 1 1 1。
数据规模
- 对于 10 % 10\% 10% 的数据, n = 1 n = 1 n=1;
- 对于另外 20 % 20\% 20% 的数据, b i = 0 b_i = 0 bi=0;
- 对于另外 20 % 20\% 20% 的数据, b i = 1 b_i = 1 bi=1;
- 对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 3 1 \le n \le 10^3 1≤n≤103, a i ∈ { 0 , 1 } a_i \in \{0, 1\} ai∈{0,1}, b i ∈ { 0 , 1 } b_i \in \{0, 1\} bi∈{0,1}。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n;
cin>>n;
ll x=0;
for(ll i=1;i<=n;++i)
{
char a;
cin>>a;
x+=a-'0';
}
ll y=0;
for(ll i=1;i<=n;++i)
{
char b;
cin>>b;
y+=b-'0';
}
cout<<abs(x-y)<<endl;
return 0;
}