描述

有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。

然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。

当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。

输入两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸。输出至少需要进行的按按钮操作次数,如果无法实现转变,则输出impossible。样例输入

011
000

样例输出

1

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
string a,des,fuben;
int ans1,ans2,flag1,flag2;
void change(int s,int t){for(int i=s;i<=t&&i<a.size();i++){if(a[i]=='1') a[i]='0';else if(a[i]=='0') a[i]='1';}
}int main(){
//    freopen("01.in","r",stdin);cin>>a>>des;fuben=a;for(int i=0;i<a.size();i++){if(a[i]!=des[i]){ans1++;if(i==0){change(0,1);}else if(i==a.size()-1){flag1=1;}else {change(i,i+2);}}}a=fuben;change(0,1);ans2++;for(int i=0;i<a.size();i++){if(a[i]!=des[i]){ans2++;if(i==0){change(0,2);}else if(i==a.size()-1){flag2=1;}else {change(i,i+2);}}}if(flag1==1&&flag2==1) puts("impossible");if(flag1==1&&flag2!=1) printf("%d\n",ans2);if(flag1!=1&&flag2==1) printf("%d\n",ans1);if(flag1!=1&&flag2!=1) printf("%d\n",min(ans1,ans2));return 0;
}

  

请参考 开关问题

值得注意的是Line31 必须写

否则看这组数据

001

000

转载于:https://www.cnblogs.com/radiumlrb/p/5873014.html

NOI OpenJudge 8469 特殊密码锁 Label贪心相关推荐

  1. OpenJudge 8469:特殊密码锁

    题目 来源 中国MOOC网,程序设计与算法(二)第一周作业1  http://cxsjsxmooc.openjudge.cn/2017t2springhw1/1/ 限制 总时间限制: 1000ms 内 ...

  2. NOI openjudge 6043:哆啦A梦的时光机(双向宽搜)

    在线评测: http://noi.openjudge.cn/ch0407/6043/ 整体思路: 这种题随便宽搜一下就好了,没啥思路可讲,,,, 失误之处: 1.开始脑子里想的是一面扩展一层,这样子可 ...

  3. NOI OpenJudge 2722 和数

    2722:和数 描述 给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和. 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3. 输入 ...

  4. http://noi.openjudge.cn/ch0107/13/

    NOI / 1.7编程基础之字符串 题目 排名 状态 提问 13:将字符串中的小写字母转换成大写字母 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个字符 ...

  5. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T31——T35

    T31 字符串P型编码 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串122344111可被描述为"1个1.2个 ...

  6. noi题库(noi.openjudge.cn) 3.9数据结构之C++STL T1——T2

    T1 1806:词典 描述 你旅游到了一个国外的城市.那里的人们说的外国语言你不能理解.不过幸运的是,你有一本词典可以帮助你. 输入首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一 ...

  7. jzoj5698-[gdoi2018day1]密码锁【贪心,差分】

    正题 题目大意 nnn个数字,每次可以让一个区间加或减111.然后数字是一个[0,m−1][0,m-1][0,m−1]的循环,求最少次数让所有数字变成000 解题思路 我们做一个%m\%m%m意义下的 ...

  8. NOIP前夕:noi.openjudge,Maximum sum

    Maximum sum 总Time Limit: 1000msMemory Limit: 65536kB Description Given a set of n integers: A={a1, a ...

  9. noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T21——T25

    T21 二维数组右上左下遍历 描述 给定一个row行col列的整数数组array,要求从array[0][0]元素开始,按从左上到右下的对角线顺序遍历整个数组. 输入 输入的第一行上有两个整数,依次为 ...

最新文章

  1. Java面试题之多线程同步和互斥有几种实现方法,都是什么?
  2. 皮一皮:现在真是键盘侠的年代阿....
  3. 【组原】广州大学计算机组成原理考试部分题+复习资料(2020-2021)
  4. TypeScript 里 never 类型的用法举例
  5. 控制器局域网can总线
  6. C及opencv指针释放问题
  7. 用随机整数填充缺失值_输入一个整数值并在C中用零填充进行打印
  8. 那些我曾经犯过的低级编程错误
  9. debug模式的开关与功能 django
  10. Tensorflow ExponentialMovingAverage 详解
  11. oracle 日期转换成毫秒数,ORACLE:毫秒与日期的相互转换,获取某天的信息
  12. jsoup: Java HTML Parser
  13. 推荐几个SQL在线学习网站
  14. (转)C#中 DirectoryEntry组件应用实例
  15. DELMIA软件:机器人固定点焊仿真
  16. Visio实现箭头反向
  17. 关于深度学习的网络流量分类论文整理(一)
  18. 微信小程序 一键下载所有图片和视频
  19. 【iOS】—— weak的基本原理
  20. mysql 8.XXX zip版的安装使用

热门文章

  1. 精通开关电源设计第二版pdf_11、秋招年35月准备期——Verilog HDL高级数字设计(第二版)...
  2. python以二进制读取的文件显示b'b'_python - Python读取二进制文件并解码 - 堆栈内存溢出...
  3. HTML中布局flex的标签,CSS3---Flex布局--项目属性
  4. matlab连通域分割_MATLAB车牌识别之7个字符切割浅谈【抽丝剥茧】
  5. java android 打地鼠_Android实现打地鼠小游戏
  6. 计算机考研去哪个城市,2019计算机考研:考研热门城市院校排名
  7. 计算机与交互式白板通过USB数据线,选购交互式电子白板注意哪些事项【详细介绍】...
  8. PythonEggs
  9. Python socket TCP
  10. Python Itsdangerous