problem

Binary Addition Accepts: 851 Submissions: 3320
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Problem Description
你有两个无限长0101串S, TS,T,分别记作S_0S_1\dotsS
0

S
1

…和T_0T_1\dotsT
0

T
1

…。其中SS和TT从nn位之后都是00,也就是当i\geq ni≥n,有S_i=T_i=0S
i

=T
i

=0。

你可以对SS串进行操作:

修改SS串的某一位,从00变成11或者从11变成00。
将SS当成二进制数加11,也就是记s=\sum_{i\geq 0} S_i2^is=∑
i≥0

S
i

2
i
,将SS变成s+1s+1二进制表示的形式,其中低位在最前面。
问最少的步数将SS变成TT。

Input
第一行一个正整数T(1\leq T\leq 10^4)T(1≤T≤10
4
)表示数据组数。

对于每组数据,第一行一个整数nn,接下来两行长度为n(1\leq n\leq 10^5)n(1≤n≤10
5
)的0101串SS和TT,表示SS和TT的前nn位。

保证\sum n\leq 10^6∑n≤10
6

Output
对于每组数据,输出一个整数,表示步数。

Sample Input
Copy
3
5
11111
00000
5
10100
01010
5
00000
00001
Sample Output
2
3
1

Hint

第一组数据中,可以选择先加一变成 “000001”,然后将S5变成 ‘0’。

第二组数据中,先加一变为 “01100”,然后直接修改。

第三组数据中,直接修改。

solution

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 2000010;int ps[maxn],pt[maxn],sf[maxn],n,ans;
char s[maxn], t[maxn];int main(){int T; cin>>T;while(T--){int n;  cin>>n;scanf("%s",s+1);scanf("%s",t+1);s[n+1] = '0';t[n+1] = '0';for(int i = 1; i <= n; i++){ps[i] = ps[i-1]+(s[i] == '0');pt[i] = pt[i-1]+(t[i] == '1');}sf[n+1] = 0;sf[n+2] = 0;for(int i = n; i >= 1; i--){sf[i] = sf[i+1]+(s[i]!=t[i]);}ans = sf[1];for(int i = 1; i <= n; i++){int tmp = (s[i+1]=='1')+(t[i+1]=='0');tmp += ps[i]+pt[i]+sf[i+2]+1;ans = min(ans, tmp);}cout<<ans<<"\n";}return 0;
}

2020 年百度之星·程序设计大赛 - 复赛 1002 Binary Addition相关推荐

  1. 2020 年百度之星·程序设计大赛 - 复赛 1001Battle for Wosneth

    problem Battle for Wosneth Accepts: 1174 Submissions: 5432 Time Limit: 2000/1000 MS (Java/Others) Me ...

  2. [2020 年百度之星·程序设计大赛 - 复赛] Binary Addition

    题解 +1会把前面所有1变成0,第一个0变成1,也就是批量消除前缀1,显然他只会用一次, 枚举时机就好了 如果a[i]是0,次数为a[0 ~ i-1]中0的个数+b[0 ~ i-1]中1的个数+1(+ ...

  3. 2021 年百度之星·程序设计大赛 - 复赛 1002 Add or Multiply 1(第2类斯特林数)

    problem solution 想到了是n个小球放到m个盒子里以后,剩下的就是板子了 #include<bits/stdc++.h> using namespace std; typed ...

  4. 2017百度之星程序设计大赛 - 复赛 01,03,05

    Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. php解:2006 年百度之星程序设计大赛复赛题目 4 ----彩球游戏

    2006 年百度之星程序设计大赛复赛题目 4 彩球游戏 X 博士是一个研究儿童智力开发方法的科学家,他为幼儿教育领域做出了许多贡献.最近, X 博士正在研究一种适合儿童的游戏,用以辅助发展儿童的观察力 ...

  6. 2020 年百度之星·程序设计大赛部分题解

    目录 Dec Covid Car Intersection Dec 2020 年百度之星·程序设计大赛 - 初赛一 HUD 6745  题解: 线性DP:f(i,j) 表示从i开始减,从j开始减时互质 ...

  7. 2020年百度之星·程序设计大赛-初赛一

    Pro.ID 1001 Drink 题解 1002 GPA 题解 1003 Dec 题解 1004 Civilization 1005 Rotate 题解 1006 Matrix 1007 Mosqu ...

  8. 2018“百度之星”程序设计大赛 - 复赛

    没有兄弟的舞会  Accepts: 928  Submissions: 2446  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6553 ...

  9. 2020 年百度之星·程序设计大赛 · 官方题解汇总

    1.测试赛 2.初赛一 留个备份,方便以后找 3.初赛二 4.初赛三 5.复赛

最新文章

  1. 【原创】大叔案例分享(3)用户行为分析--见证scala的强大
  2. opencv 图片剪切
  3. 下拉框的value值怎么设置为变量_自绘制HT For Web ComboBox下拉框组件
  4. ios软件商店上架老被打回_一款APP上架苹果应用商店的流程,费用是多少?
  5. Bailian2810 完美立方【暴力】(POJ NOI0201-1812)
  6. python3菜鸟教程
  7. 一种word版题库制作成excel版步骤
  8. windows10 输入法繁体
  9. IDEA2019安装教程
  10. 中兴服务器iSAC接口默认账号密码和IP
  11. 大图书馆 #5 纳瓦尔宝典
  12. 举个栗子~Minitab 技巧(5):掌握常用快捷键,提高统计分析效率
  13. 2.6_11 Redis主从复制、哨兵模式、分片集群
  14. 中小型企业要抓住中产阶级消费带来的机会
  15. dp专题-cf 711c
  16. Linux-dd命令
  17. 关于机房环境监控系统基础知识
  18. css 利用阴影给字体加粗
  19. 基于asp.net在线手机销售系统
  20. java毕业设计汽车售后服务管理系统mybatis+源码+调试部署+系统+数据库+lw

热门文章

  1. windows 7 局域网文件(夹)共享方法
  2. Scala 基础 —— String(StringOps)、tuple、Range
  3. 在网页子文本框模拟特定的鼠标滚轮_Pyhton爬虫的另类操作,之前有碰到不能爬的网页来看看!...
  4. typescript 怎么表示当前时间减一个月_吃什么减肚子最快最有效 4种刮油食物吃出小蛮腰...
  5. 简单python脚本实例-python脚本例子
  6. python发音翻译-python实现在线翻译
  7. python入门经典100题-Python3基础训练经典100题(带答案)下载
  8. python基础教程廖雪峰云-Python 基础教程
  9. python编程入门-Python编程:从入门到实践 PDF 中文扫描版
  10. 自学python能干什么-普通人学Python能干什么?老男孩Python入门