当前位置: 首页 > news >正文

第 26 场 蓝桥入门赛

2.对联【算法赛】 - 蓝桥云课

问题描述

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

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

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

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

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

输入格式

第一行输入一个整数 N(1≤N≤1e3),表示每幅对联中“福”的数量。

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

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

输出格式

输出一个整数表示答案。

样例输入

4
0011
1011

样例输出

3

思路:

以最多的0对应最多的1.

代码如下:

#include <iostream>
#include<string> 
using namespace std;
int main()
{string s1,s2;int n,zero_f = 0,zero_s = 0,one_f = 0,one_s = 0;cin >> n >> s1 >> s2;for(int i = 0 ; i < s1.size() ; i++){if(s1[i] == '1')zero_f++;if(s1[i] == '0')one_f++;}for(int i = 0 ; i < s2.size() ; i++){if(s2[i] == '1')zero_s++;if(s2[i] == '0')one_s++;}// cout << zero_f << " " <<  one_f << endl;// cout << zero_s << " " <<  one_s << endl;int cnt = 0;cnt = min(zero_f,one_s) + min(zero_s,one_f);cout << cnt;return 0;
}


http://www.mrgr.cn/news/89950.html

相关文章:

  • 3. 学习UVM的核心组件
  • python 读取yaml文件
  • 【学Rust写CAD】5 三维转换矩阵解析及应用示例
  • 我的年度写作计划
  • 通过C变成语言实现一个或多个算法
  • ES6 Set 数据结构用法总结
  • Java中的继承及相关概念
  • .NET Core 8 Blazor 和 Vue 3 技术构建网
  • 微信小程序案例2——天气微信小程序(学会绑定数据)
  • Vite+TS项目中配置路径别名
  • OC-Block
  • 构建Ubuntu unminimized的docker镜像
  • 【前端】打造自己的hexo博客_hexo一本通
  • 使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)上安装 Java 8
  • Vite 打包原理
  • 【11天从零基础入门flask】第 6 章:模板优化
  • 激活函数篇 03 —— ReLU、LeakyReLU、ELU
  • 程序员也可以这样赚钱
  • Vite 为什么快,是怎么打包的
  • sqli-lab靶场学习(五)——Less15-17(post方法盲注、修改密码)
  • 深度剖析 Redisson 分布式锁:原理、实现与应用实践
  • mysql 学习11 事务,事务简介,事务操作,事务四大特性,并发事务问题,事务隔离级别
  • 深入探究 C++17 std::is_invocable
  • 计算机毕业设计Tensorflow+LSTM空气质量监测及预测系统 天气预测系统 Spark Hadoop 深度学习 机器学习 人工智能
  • 虚拟局域网之详解(Detailed Explanation of Virtual Local Area Network)
  • 参数映射服务完整解决方案