UVa 12545 比特变换器】的更多相关文章

https://vjudge.net/problem/UVA-12545 题意:输入两个等长的串S和T,其中S包含字符0,1,?,但T只包含0和1. 用尽量少的步数把S变成T.每步有3种操作: ①把S中的0变成1:②把S中的“?”变成0或者1:交换S中任意两个字符. 思路:题目不是很难.首先考虑交换,然后再看有多少不同的,就需要再加上多少次. #include<string> #include<iostream> #include<algorithm> using na…
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中不同的数字,计算出还要再…
题意:输入两个等长(长度不超过100)的串S和T,其中S包含字符0,1,?,但T只包含0和1,你的任务是用尽量少的步数把S变成T.有以下3种操作: 1.把S中的0变成1. 2.把S中的“?”变成0或1. 3.交换S中任意两个字符. 分析: 1.为保证步数最少,先统计两串中1的个数和1的位置.如果cnta>cntb,则不能把S变成T,因为1不能变成0. 2.先将?变成0或1,变换原则是若cnta<cntb且b中对应位置为1,则变为1:否则,变为0. 3.再将0变成1,变换原则是cnta<c…
题意: 两个等长的字符串p和q,p有‘0’,‘1’,‘?’组成,q由‘0’,‘1’组成.有三种操作:1.将‘?’变成0:2.将‘?’变成‘1’:3.交换同一字符串任意两个位置上的字符.问有p变到q最少需要几次操作. 分析: 若两个位置上的字符相同,则不用处理:能交换位置便交换位置,这样能一次改变两个字符,优先交换‘0’,如果没‘0’再交换‘?’. 代码: #include <iostream>#include <cstring>#include <cstdio>#inc…
题意:给出两个等长的字符串,0可以变成1,?可以变成0和1,可以任意交换s中任意两个字符的位置,问从s变成t至少需要多少次操作. 析:先说我的思路,我看到这应该是贪心,首先,如果先判断s能不能变成t,就计算t中的1和s中的1. 然后算出t比s多多少1,然后先考虑把?变成1是最优的,如果不够就只能把0变成1,切不可把?变成1,因为这样要两步, 不是最优,而把0变成1是一步.然后把剩下的?变成1(如果1还不够)或者是0(1够了).最后是计算要交换的次数, 这个只要统计不同的位置有多少即可,别忘了1可…
点击打开链接 #include<cstdio> #include<cstring> /* 别看错了:0能变1,1不能变0 能完成的条件是,s与t长度相等且s中0数量和?数量之和大于等于t中0数量 首先,对于相等的字符显然不应修改 然后: ***抄的 主要就是要注意0能变1,1不能变0 因此,优先满足1->0的情况 *** */ char s[110]; char t[110]; int a1;//0->1 int a2;//1->0 int a3;//?->…
题意:给出两个等长的字符串,0可以变成1,?可以变成0和1,可以任意交换s中任意两个字符的位置,问从s变成t至少需要多少次操作 先可以画个草图 发现需要考虑的就是 1---0 0---1 ?---0 ?---1 下面三种都是只需要一次操作就可以完成的, 所以应该优先考虑1---0 如果存在0---1,就优先交换1---0和0---1,因为这样可以同时满足两组 如果不存在0---1,就交换1---0与?---1,这样每交换一次,需要两次操作,即先将问号变成0,再交换 如果最后都还剩下有1--0(因…
参考了https://blog.csdn.net/catglory/article/details/47188949 最后推出来操作的个数为问号的个数 加上 同一位置上S串为0而T串为1的位置数量 与 同一位置上S串为1而T串为0的位置数量的最大值. 也就是max(ans1 + ans2) + que (que为问号总数, 而ans1和ans2意义如上) 这个公式应该是众多博客里面最简单的了, 让我一步一步推给你看 首先判断可不可行, 如果S串1大于T串中1的个数那么就永远不行 因为S串中1的个…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果1的个数第一个串比第2个串多. 那么就无解. 否则. 找几个位置去凑1 优先找'?'然后才是0的位置 剩余的全都用swap操作就好 [代码] /* 1.Shoud it use long long ? 2.Have you ever test several sample(at least therr) yourself? 3.Can you promise that the solution is right? At le…
来自 https://blog.csdn.net/su_cicada/article/details/80085318 习题4-7 RAID技术(RAID!, ACM/ICPC World Finals 1997, UVa509) RAID技术用多个磁盘保存数据.每份数据在不止一个磁盘上保存,因此在某个磁盘损 坏时能通过其他磁盘恢复数据.本题讨论其中一种RAID技术.数据被划分成大小 为s(1≤s≤64)比特的数据块保存在d(2≤d≤6)个磁盘上,如图4-9所示,每d-1个数据块都 有一个校验块…