UVA 12545 Bits Equalizer(模拟+贪心)
来源:互联网 发布:keynote windows能用吗 编辑:程序博客网 时间:2024/04/29 12:19
定义:one zero表示原串的0和1的个数 one1和zero1表示目的串的0和1的个数
分三种情况:
1、原串的0的个数和?个数和小于目的串0个数,一定输出-1
2、原串0多于目的串,那么先用?变换成1,选取对应目的串也是1的位置先变,如果不够再将其他?变成1,如果还不够找目的串相对位置为1的0变成1.......
3、原串1个数少于目的串,那么说明原串0,多了,先把1补全,然后其他的?换成0,用的也是贪心的思路,和上面情况2类似
总之能用?的要用?
#include <iostream>#include <string.h>#include <algorithm>#include <stdio.h>using namespace std;#define maxn 500char begin[maxn],end[maxn];int zero,one,zero1,one1;int main(){ int i,j,k,t,len,ans,now,cas=0; scanf("%d",&t); while(t--){ scanf("%s%s",begin,end); printf("Case %d: ",++cas); zero=one=zero1=one1=0; ans=0; len=strlen(begin); for(i=0;i<len;i++){ if(begin[i]=='0')zero++; else if(begin[i]=='1')one++; if(end[i]=='0')zero1++; else if(end[i]=='1')one1++; } if(len-one<zero1){//case 1 printf("-1\n"); continue; } if(zero<=zero1){//case 2 zero can only change by '?' k=zero1-zero; for(i=0;i<len&&k>0;i++){ if(begin[i]=='?'&&end[i]=='0') begin[i]='0',ans++,k--; } for(i=0;i<len && k>0;i++) if(begin[i]=='?')begin[i]='0',ans++,k--; for(i;i<len;i++)if(begin[i]=='?') begin[i]='1',ans++; now=0; for(i=0;i<len;i++) if(begin[i]!=end[i])now++; ans+=now/2; printf("%d\n",ans); continue; } if(one<=one1){ k=one1-one; for(i=0;i<len&&k>0;i++)if(begin[i]=='?'&&end[i]=='1')begin[i]='1',ans++,k--; if(k>0){ for(i=0;i<len&&k>0;i++)if(begin[i]=='?')begin[i]='1',ans++,k--; if(k>0){ for(i=0;i<len&&k>0;i++)if(begin[i]=='0'&&end[i]=='1')begin[i]='1',ans++,k--; for(i=0;i<len&&k>0;i++)if(begin[i]=='0'&&end[i]!='0')begin[i]='1',ans++,k--; for(i=0;i<len&&k>0;i++)if(begin[i]=='0')begin[i]='1',ans++,k--; } } for(i=0;i<len;i++)if(begin[i]=='?') begin[i]='0'; now=0; for(i=0;i<len;i++)if(begin[i]!=end[i])now++; ans+=now/2; printf("%d\n",ans); } } return 0;}
- UVA 12545 Bits Equalizer(模拟+贪心)
- UVa 12545 - Bits Equalizer(贪心)
- UVa:12545 Bits Equalizer(贪心)
- UVA - 12545 Bits Equalizer (贪心)
- UVA - 12545 Bits Equalizer 贪心
- uva 12545 Bits Equalizer(贪心)
- 习题8-3 UVA - 12545 Bits Equalizer(贪心)
- UVA 12545 Bits Equalizer(瞎搞 贪心)
- UVa 12545 Bits Equalizer——贪心
- 12545-Bits Equalizer贪心
- 12545 - Bits Equalizer(贪心?)
- Uva - 12545 - Bits Equalizer
- uva 12545Bits Equalizer
- uva 12545 - Bits Equalizer
- UVA 12545 - Bits Equalizer
- UVA 12545 Bits Equalizer
- uva 12545 - Bits Equalizer(比特变化器)
- uva 12545 Bits Equalizer (SWERC 2012) 贪心 分析
- date
- access vba在新建查询前查看查询名是否存在
- ios升级app
- 贪心-hdu-3661-Assignments
- hdu 4394 Digital Square
- UVA 12545 Bits Equalizer(模拟+贪心)
- vim配置地址链接
- xp 32bit os 只能使用3.2G内存 的变通解决方案
- access vba 用recordset读取表中数据的简单方法
- QT判断是否含有某字符串
- linux为用户添加sudo权限sudo: /etc/sudoers is mode 0640, should be 0440?”
- HDU 4000 Fruit Ninja 【树状数组】
- POJ 2481 - Cows 树状数组离线处理
- access string 字符串处理函数Mid(), Left(), inStr