Bits Equalizer 组队赛第二场Regionals 2012, Europe - Southwestern B题
来源:互联网 发布:python 示例 编辑:程序博客网 时间:2024/05/22 14:27
题目:题目链接
题目总体来说不难 ,就是给你一个S串和一个T串,然后问你经过多少次操作可以将S串转换为T串。可以进行的操作有:将0变成1;将?变成 0或者1;交换S中的任意两个字符。 如果最终不能把S串转换成T串,则输出-1;
题目的意思很明确了,要想最少的次数,我们肯定先进行的就是交换,这样我们可以先找到(1,0)和(0,1)的组合,这样直接交换0和1.处理完这种情况后,我们需要考虑(?,1)这种情况,我们先尽量寻找(1,0)这种组合,交换(?,1)和(1,0)。没有的话就直接把?变成1就可以了。对于(?,0)的情况,直接把?变成0就可以了。因为他和交换的步数是一样的。so....上代码:
#include <iostream>#include <cstdio>#include <string>#include <string.h>#include <map>#include <vector>#include <cstdlib>#include <cmath>#include <algorithm>#include <cmath>#include <queue>#include <set>#include <stack>using namespace std;int main(){ int n; scanf("%d", &n); char s[150]; char t[150]; for(int i = 1; i <= n; ++i) { scanf("%s", s); scanf("%s", t); printf("Case %d: ", i); int lens = strlen(s); int lent = strlen(t); if(lens < lent || lens > lent) { //cout << "111111111111111"<<endl; printf("-1\n"); continue; } int cnt = 0; for(int j = 0; j < lens; ++j) { if(s[j]==t[j]) continue; else if(s[j]=='0'&&t[j]=='1') { for(int k = 0; k < lens; ++k) { if(s[k]==t[k]) continue; else if(s[k] == '1'&&t[k] =='0') { swap(s[j], s[k]); cnt++; break; } } } else if(s[j]=='1'&&t[j]=='0') { for(int k = 0; k < lens; ++k) { if(s[k]==t[k]) continue; else if(s[k] == '0'&&t[k] =='1') { swap(s[j], s[k]); cnt++; break; } } } } for(int j = 0; j < lens; ++j) { //cout << "33333333333"<<endl; if(s[j]==t[j]) continue; else if(s[j]=='?' && t[j]=='1') { for(int k = 0; k < lens; ++k) { if(s[k]==t[k]) continue; else if(s[k]=='1'&&t[k]=='0') { // cout << "交换?和1对应的1和0"<<endl; swap(s[j], s[k]); s[k] = '0'; cnt += 2; break; } } if(s[j]=='?') { s[j] = '1'; cnt++; } } else if(s[j]=='?' && t[j]=='0') { s[j] = '0'; cnt++; } else if(s[j]=='0' && t[j]=='1') { s[j] = '1'; cnt++; } } int flag = 0; for(int j = 0; j < lens; ++j) { if(s[j]!=t[j]) { flag = 1; break; } } if(flag == 0) printf("%d\n", cnt); else printf("-1\n"); } return 0;}
努力努力...
- Bits Equalizer 组队赛第二场Regionals 2012, Europe - Southwestern B题
- Sentry Robots 组队赛第二场 Regionals 2012, Europe - Southwestern F题
- 20131005组队赛-Regionals 2010, Europe - Southwestern
- Regionals 2011 Europe - Southwestern
- 20131006组队赛-Regionals 2010, Europe - Southeastern
- 组队赛131006 Regionals 2010, Europe - Southeastern
- 组队赛131005 Southwestern Europe Regional, SWERC 2010
- Regionals 2012, Europe - Southwestern A.Beehives(BFS求无向图最小环)
- 20130830组队赛-Regionals 2012, Asia - Jakarta
- 130829组队赛-Regionals 2012, Asia - Jakarta
- 20130902组队赛Regionals 2012, Latin America
- 130902组队赛-Regionals 2012, Latin America
- Regionals 2012, Asia - Hatyai 组队赛130912
- 20131003组队赛-Regionals 2012, South Pacific
- Regionals 2007 >> Europe - Southwestern Ladies' Choice 稳定婚姻问题 uva live 3989
- 130825组队赛-Regionals 2012, North America - East Central NA
- 20130827组队赛Regionals 2012, North America - Greater NY
- 130827组队赛Regionals 2012, North America - Greater NY
- 寒门再难出贵子
- R语言入门 一些基本的操作
- 实现iphone/Ipad 删除应用的颤抖动画效果
- arduino+android好项目
- easyui 模态窗口插件,局部模态,伪模态
- Bits Equalizer 组队赛第二场Regionals 2012, Europe - Southwestern B题
- 12036徐波:PMBOK整合:项目章程内容及考点解析
- python 使用GeoIP
- c++快捷方式
- myeclipse对于hibernate的支持
- JS仿淘宝网顶部的导航菜单-导航菜单类 .
- LR录制不能自动弹出IE
- c++中冒号(:)和双冒号(::)的用法
- ZOJ 3650 Toy Blocks(DP + 线段树优化转移)