UVA - 12545 Bits Equalizer (贪心)

来源:互联网 发布:主机屋数据库地址 编辑:程序博客网 时间:2024/05/16 07:41

题意:
给出两个字符串 S和T ,S中只含0,1,?,T中只含0,1 要求对S操作把S转换成T,规则如下:
1.0 ->1
2.任意位置两两交换
3.?->0或1
求最少步数,如果无法转换输出-1

对于S与T的不对应情况,能很直观的分为四类,01 10 1? 0?,由于交换能够使步数减少,01 和 10必然要先交换,交换之后如果只剩下01,那么剩下的不对应个数累加就直接是答案,否则再考虑?->0继续产生匹配减少个数累加判断结果

#include<cstring>#include<string>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>#include<map>#include<cstdlib>#include<cmath>#include<vector>//#pragma comment(linker, "/STACK:1024000000,1024000000");using namespace std;#define INF 0x3f3f3f3fchar s1[205];char s2[205];int a01,a10,ax1,ax0;int main(){    int ca=1;    int T;    scanf("%d",&T);    while(T--)    {        a01=a10=ax1=ax0=0;        scanf("%s%s",s1,s2);        int len=strlen(s1);        for(int i=0;i<len;i++)        {            if(s1[i]!=s2[i])            {                if(s1[i]=='?')                {                    if(s2[i]=='0') ax0++;                    else ax1++;                }                else if(s1[i]=='0') a01++;                else a10++;            }        }        int ans=0;        ans+=min(a01,a10);        a01-=ans;        a10-=ans;        int flag=0;        if(a01)        {           ans+=a01;        }        else if(a10)        {            if(ax1>=a10)            {                ans+=2*a10;                ax1-=a10;            }            else flag=1;        }        ans+=ax1;        ans+=ax0;        printf("Case %d: ",ca++);        if(!flag) printf("%d",ans);        else printf("-1");        puts("");    }    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 六个月宝宝喝贝因美过敏怎么办 超市盘点少的货扣员工工资怎么办 孩子东西在学校被偷了怎么办 想退出却不舍的感情不知怎么办? 我被老板摸全身失眠有阴影怎么办 不知道绑定支付宝的微博账号怎么办 银行卡丢了补办后支付宝账户怎么办 未激活的银行卡被锁定了怎么办 手机网银上的钱被盗走了怎么办 支付宝支付失败银行卡扣了钱怎么办 小程序的二次验证码丢失怎么办 苹果手机不小心购买游戏币怎么办 在淘宝买的洗衣粉是假的怎么办 京东快递电话填错了怎么办 新买的手机卡被注册过支付宝怎么办 手机卡掉了别人登陆支付宝怎么办 手机卡注销了支付宝欠的钱怎么办 手机丢了支付宝和微信里的钱怎么办 新办的手机号已被注册支付宝怎么办 新办的移动卡不能注册支付宝怎么办 新办的宝卡支付宝注册过怎么办 办支付宝后银行卡被盗刷怎么办 微信扫二维码送平衡群发了怎么办车 拼多多没收到货点了确认收货怎么办 拼多多收货地址填错了怎么办 京东订单申请退款已发货怎么办 手机播放声音的地方进水了怎么办 手机出声音的地方进水了怎么办 手机听声音的地方进水了怎么办 装修公司我只要基装她不肯怎么办 雄迈未来家庭忘记账号和密码怎么办 地方文件和国家政策有冲突怎么办? 网上贷款放款成功没有到账怎么办 我来贷放款中不到账怎么办 手持身份证被别人网贷了怎么办 身份证被别人做了网贷怎么办 身份证丢了被别人网贷了怎么办 户口身份证被注销了网贷怎么办 首付交了贷款办不下来怎么办 付首付后贷款没有批下来怎么办 交了首付贷款没有办下来怎么办