uva12545 比特变换器(贪心)
uva12545 比特变换器(贪心)
输入两个等长的串S,T(长度小于100),其中S包含字符0,1,?,T中包含0和1。有三种操作:将S中的0变为1,?变为0或1,交换S中的任意两个字符。求将S变成T的最少步数。
首先考虑去掉问号。设S中1的个数为one1,T中1的个数为one2。在one1<one2的前提下,肯定是把问号填成与T中相同的数字更优。如果one1=one2,那么问号中只能填0。接着就是考虑将0变成1,相同的思路即可。最后等到one1=one2,统计S和T中不同的数字,计算出还要再走几步即可。
#include <cstdio>
#include <cstring>
using namespace std;
const int maxl=105;
int T, l1, l2, one1, one2, step;
char s1[maxl], s2[maxl];
int main(){
scanf("%d", &T);
for (int it=1; it<=T; ++it){
scanf("%s%s", s1, s2);
one1=one2=step=0; int tmp=0;
l1=strlen(s1); l2=strlen(s2);
for (int i=0; i<l1; ++i)
if (s1[i]=='1') ++one1;
for (int i=0; i<l2; ++i)
if (s2[i]=='1') ++one2;
if (l1!=l2||one1>one2){
printf("Case %d: -1\n", it);
continue; }
for (int i=0; i<l1; ++i)
if (s1[i]=='?'){ //用贪心法去除所有问号
s1[i]=s2[i];
if (s1[i]=='1') ++one1;
if (one1>one2) --one1, s1[i]='0';\
++step;
}
for (int i=0; i<l1; ++i) //用贪心法化0为1
if (one1<one2&&s1[i]=='0'&&s2[i]=='1'){
++one1; s1[i]='1'; ++step;
}
for (int i=0; i<l1; ++i) //统计不同之处
if (s1[i]!=s2[i]) ++tmp;
step+=tmp/2; //这是由于只有0和1
printf("Case %d: %d\n", it, step);
}
return 0;
}
uva12545 比特变换器(贪心)的更多相关文章
- UVA - 12545 Bits Equalizer (比特变换器)(贪心)
题意:输入两个等长(长度不超过100)的串S和T,其中S包含字符0,1,?,但T只包含0和1,你的任务是用尽量少的步数把S变成T.有以下3种操作: 1.把S中的0变成1. 2.把S中的“?”变成0或1 ...
- UVa 12545 比特变换器
https://vjudge.net/problem/UVA-12545 题意:输入两个等长的串S和T,其中S包含字符0,1,?,但T只包含0和1. 用尽量少的步数把S变成T.每步有3种操作: ①把S ...
- 使用C#处理基于比特流的数据
使用C#处理基于比特流的数据 0x00 起因 最近需要处理一些基于比特流的数据,计算机处理数据一般都是以byte(8bit)为单位的,使用BinaryReader读取的数据也是如此,即使读取bool型 ...
- BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]
1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1383 Solved: 582[Submit][St ...
- HDOJ 1051. Wooden Sticks 贪心 结构体排序
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【BZOJ-4245】OR-XOR 按位贪心
4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 486 Solved: 266[Submit][Sta ...
随机推荐
- DELPHI中四种EXCEL访问技术实现
一.引言 EXCEL在处理中文报表时功能非常强大,EXCEL报表访问也是信息系统开发中的一个重要内容,本文总结以往开发中所用到的几中EXCEL文件访问方法,在实际工作中也得到了很好的验证,本文列举了其 ...
- hdu 4514 湫湫系列故事――设计风景线(求树的直径)
随着杭州西湖的知名度的进一步提升,园林规划专家湫湫希望设计出一条新的经典观光线路,根据老板马小腾的指示,新的风景线最好能建成环形,如果没有条件建成环形,那就建的越长越好. 现在已经勘探确定了n个位置 ...
- Appium-xpath详解
一.xpath简介 XPath就是XML 路径,练习XPath的使用可以直接使用火狐浏览器 火狐浏览器下载 free bug和free path两个插件. 手机xpath可以自己写,路径关键字选cla ...
- java是用utf-16be编码方式编的。中文和英文都是两个字节
- STL memory.cpp
memory.cpp # // Filename: memory # # // Comment By: 凝霜 # // E-mail: mdl2009@vip.qq.com # // Blog: ht ...
- mysql 常用的存储引擎MyISAM/InnoDB比较
- 【LeetCode】020. Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- CSS之EM相对单位
之前以为em单位只是在font-size中起到继承作用, 后来慢慢觉得,继承,应该是在几乎所有样式中都可以是实现的,比如height,width,border... 今天才简单测试了下,果真是可以实现 ...
- centos 6 rsync+inotify 实时同步
主机名.ip: server 172.31.82.184 client 172.31.82.185 需求: 1.server端 ”/data/server“ 做为client端 “/data/cli ...
- Sublime 实践
1.下载开发版:http://www.sublimetext.com/dev 2.安装Package control: (1)按键ctrl+~ (2)在命令行中输入: import urllib2, ...