C. Menorah global18
admin
2024-05-10 23:45:51
0

Problem - C - Codeforces

题意:

一个01字符串a,b。选中一个a[i]==1不动,其他的a[i]进行翻转,具体是‘1’变成‘0’,‘0’变成‘1’

求最少次数由a变成b

感悟:

这个题思路挺清晰的,就是我代码的判断条件不太明确,导致错了几次,下次每种条件下想清楚了再写

分析:

如果自己创建一个随意的01串,然后随意的翻转几次,就可以发现:

假设a中的‘1’个数为cnt1,b中的‘1‘个数为cnt2

把a翻转一次,那a中的’1‘的个数会变成n-cnt1+1,如果再翻转一次会还原到cnt1

所以不管怎么翻转,a中’1‘的个数总是为cnt1或者n-cnt1+1,那么如果cnt2不等于这两个中的任何一个,那么答案就是-1。

上面是不合法的情况,那么合法的呢

因为翻转两次会还原到原来的个数,仔细发现,其实就是a中的某一个’1‘和某一个’0‘交换了位置,个数并没有发生任何改变。第一次翻转,一个’1‘不变,第二次翻转另外一个’1‘不变(但是是由原来的一个’0‘变成’1‘的,第一个不变的’1‘会在第二次翻转的时候变成’0‘)。所以只是a中原来的某一个’1‘和某一个’0’交换了位置而已。

一)cnt1==cnt2:可以看出交换了一次位置的代价是+2,交换位置本身个数不变。所以在cnt1==cnt2的时候会选择去交换位置,因为是两两搭配的原因,只需要交换(a[i]!=b[i])个数/2,因为交换一次的代价是2,所以(a[i]!=b[i])个数/2*2,所以这种情况的答案就是(a[i]!=b[i])的个数

二)cnt1!=cnt2:那就是cnt2==n-cnt1+1。那就要进行一次改变了,首先要翻转一遍:

翻转的时候又要分类讨论:

第一:有(a[i]==b[i]&&a[i]=='1')的情况,这样翻转之后的代价会少一个

第二:没有上述情况,那就翻转随意一个a[i]=='1'

上面翻转完之后cnt1就等于了cnt2,下面转回第一种情况

三)cnt1==cnt2&&cnt2==n-cnt1+1,这种情况也是有的,比如n==9,cnt1==5,cnt2==5。那这种情况就要取上面两种情况的最小值了,可能要提前写。

上面是三种情况,分类讨论情况清楚就可以了。

下面看代码,代码可能有点乱,QAQ

signed main(){IOS;int T;//T=1;cin>>T;while(T--){int n;cin>>n;string a,b;cin>>a>>b;int cnt1=0,cnt2=0;for(int i=0;i

相关内容

热门资讯

【看表情包学Linux】进程地...   🤣 爆笑教程 👉 《看表情包学Linux》👈 猛...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
编译原理陈火旺版第三章课后题答... 下面答案仅供参考! 1.编写一个对于 Pascal 源程序的预处理程序。该程序的作用是...
MacBookPro M2芯片... MacBookPro M2芯片下如何搭建React-Native环境目录软件下载环境配置 目录 写在...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
pyflink学习笔记(六):... 在pyflink学习笔记(一)中简单介绍了table-sql的窗口函数,下面简单介绍下...
创建deployment 创建deployment服务编排-DeploymentDeployment工作负载均衡器介绍Depl...
gma 1.1.4 (2023... 新增   1、地图工具    a. 增加【GetWorldDEMDataSet】。提供了一套 GEO...
AI专业教您保姆级在暗影精灵8... 目录 一、Stable Diffusion介绍    二、Stable Diffusion环境搭建 ...
vue笔记 第一个Vue应用 Document{{content}}{{...
Unity自带类 --- Ti... 1.在Unity中,自己写的类(脚本)的名字不能与Unit...
托福口语21天——day5 发... 目录 一、连读纠音 二、语料输入+造句输出 三、真题 一、连读纠音 英语中的连读方式有好几种...
五、排序与分页 一、排序 1、语法 ORDER BY 字段 ASC | DESC ASC(ascen...
Linux系统中如何安装软件 文章目录一、rpm包安装方式步骤:二、deb包安装方式步骤:三、tar....
开荒手册4——Related ... 0 写在前面 最早读文献的时候,每每看到related work部分都会选择性的忽略&...
实验01:吃鸡蛋问题 1.实验目的: 通过实验理解算法的概念、算法的表示、算法的时间复杂度和空间复杂度分析&...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
Spring Cloud Al... 前言 本文小新为大家带来 Sentinel控制台规则配置 相关知识,具体内容包括流控...
多项目同时进行,如何做好进度管... 多项目同时进行,如何做好进度管理? 大多数时候,面对项目进...
ATTCK红队评估实战靶场(二... 前言 第二个靶机来喽,地址:vulunstack 环境配置 大喊一声我...