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

第 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.kler.cn/a/537870.html

相关文章:

  • 小红书提出新面部视频交换方法DynamicFace,可生成高质量且一致的视频面部图像。
  • CSS Overflow 属性详解:控制内容溢出的利器
  • JDK 21 模板字符串详解
  • 解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException
  • C# Winform怎么设计串口,客户端和相机控件界面显示
  • 内容中台赋能人工智能技术提升业务创新能力
  • spring学习(spring-DI简单入门案例)
  • to_csv保存指定列的方法
  • apachePoi中XSSFClientAnchor图片坐标简述;填充多张图片
  • 利用PHP爬虫开发获取淘宝分类详情:解锁电商数据新视角
  • Spring中都应用了哪些设计模式?
  • GitHub Pages + Jekyll 博客搭建指南(静态网站)
  • 8.高精度算法
  • 每日学习 设计模式 五种不同的单例模式
  • F#语言的学习路线
  • 零基础都可以本地部署Deepseek R1
  • 【AI知识点】如何判断数据集是否噪声过大?
  • UnityShader学习笔记——深度与法线纹理
  • 采用idea中的HTTP Client插件测试
  • postman使用简介
  • VMware虚拟机安装、创建Ubuntu虚拟机及汉化设置全流程详细教程
  • Android车机DIY开发之软件篇(十) NXP MfgTool和UUU的使用
  • 响应式编程库Reactor(二)Spring Webflux
  • HarmonyOS 5.0应用开发——全局自定义弹出框openCustomDialog
  • 蓝桥与力扣刷题(19 删除链表的倒数第N个结点)
  • 刚发布的nodejs 23提供了哪些新能力