习题 8-3 比特变换器(Bits Equalizer, SWERC 2012, UVa12545)

2024-04-13 02:58

本文主要是介绍习题 8-3 比特变换器(Bits Equalizer, SWERC 2012, UVa12545),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原题链接:https://vjudge.net/problem/UVA-12545
分类:贪心法
备注:简单思维题

先看还少多少个’1’,如果s的’1’多余t的‘1’肯定无解。
然后把少掉的这些’1’,全部用’?‘去变成’1’,如果’?‘有剩余则变“0‘。
如果’?‘不够,则要把遍历一遍,当’1’的数量处于不足状态时,把没匹配的’0’变’1’。
最后会剩下2*k个位置不匹配的字符,两两交换,贡献为k。

#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
int n;
char s[maxn],t[maxn];
int main(void){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%s%s",s,t);printf("Case %d: ",i);int len=strlen(s),num=0,cnt=0;//num求还少几个'1'for(int i=0;i<len;i++){if(s[i]=='?')cnt++;if(s[i]=='1')num--;if(t[i]=='1')num++;}cnt-=num;if(num<0){printf("-1\n");continue;}int ans=0,num2=0;for(int i=0;i<len;i++){if(s[i]=='?'){ans++;if(t[i]=='1'){if(num)s[i]='1',num--;else s[i]='0',cnt--;}else{if(cnt)s[i]='0',cnt--;else s[i]='1',num--;}}}for(int i=0;i<len;i++){if(s[i]!=t[i]){if(s[i]=='0'&&num)s[i]='1',ans++,num--;else s[i]='1',num2++;}}printf("%d\n",ans+num2/2);}return 0;
}

这篇关于习题 8-3 比特变换器(Bits Equalizer, SWERC 2012, UVa12545)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/898956

相关文章

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

第六章习题11.输出以下图形

🌏个人博客:尹蓝锐的博客 希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~ 1、题目要求: 输出以下图形

【C++ Primer Plus习题】12.2

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "String.h"using namespace std;int main(){String s1(" and I am a

c++习题30-求10000以内N的阶乘

目录 一,题目  二,思路 三,代码    一,题目  描述 求10000以内n的阶乘。 输入描述 只有一行输入,整数n(0≤n≤10000)。 输出描述 一行,即n!的值。 用例输入 1  4 用例输出 1  24   二,思路 n    n!           0    1 1    1*1=1 2    1*2=2 3    2*3=6 4

C语言程序与设计第四版课后习题 - 1~8章大合集

前言 本文章是一个大合集,按照课后习题的命名方式命名,方便寻找,只需要在目录上点相对应的题号即可在这里插入图片描述 第一章课后习题 1.1 编写一个C程序 题目概述: 请参照本章例题,编写一个C程序,输出一下信息: *****************************Very good!***************************** 代码实现: #define

【C++ Primer Plus习题】12.1

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "Cow.h"using namespace std;int main(){Cow c1;Cow c2("老母牛", "喝奶"

应届生入职练手习题-蒙特卡洛算法(1.5H)

应届生入职练手习题 [编辑] 模拟射击,根据命中概率来求PI 要求:假设有一个半径为1000的圆形靶子(具体单位没有意义,不用写),我们随意对其进行射击,那么,统计所有落在圆形外接正方形中的弹着点,可以很容易得知:命中这个圆形靶子的概率是圆形的面积与外接方形面积的比 目的:检验编程风格和实现效率 要解这个题目就得有对蒙特卡洛算法的了解,原理如下 在数值积分法中,利用求单位圆的1/4的面积

软考-软件设计师(UML习题)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨   前言 小郑正在备考2024年下半年的中级软件设计师,所以打算开展一个软考备考专栏,在这里记录一下备

25版王道数据结构课后习题详细分析 第八章 8.2 插入排序

一、单项选择题 ———————————————————— ———————————————————— 解析:直接插入排序在最坏的情况下要做n(n-1)/2次关键字的比较,当n=5时, 关键字的比较次数为10。注意不考虑与哨兵的比较。 正确答案: ———————————————————— ———————————————————— 解析:由于序列初始基本有序,因此使用直接插入排序

VS2010与2012项目类型选择,MFC

今天装了了一个 VS2012,  在用向导创建工程的时候,发现在项目类型选择的时候,我们要去观察室继承的谁,VS2010项目类型选择,MFC,mainfrm 继承是cframewnd,而VS2012,继承是CframewndEX    区别好大