8469:特殊密码锁

传送门:http://noi.openjudge.cn/ch0406/8469/

描述

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

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

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

输入

两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸。

输出

至少需要进行的按按钮操作次数,如果无法实现转变,则输出impossible。

样例输入

011
000

样例输出

1

然而并没有AC,求dalao纠察Orz
 1 /////////////////////////
 2 //
 3 //6-27   PAx: Homii_wors
 4 //
 5 //Name:  N8469 Spacikeys
 6 //
 7 //Solut: NP  &DFS W.A.
 8 //
 9 /////////////////////////
10 //#include "stdafx.h"
11 #include <bits/stdc++.h>
12 using namespace std;
13 int be[3][31], af[31], n = 0, N = 0;
14 inline void pro(int x, int d)
15 {
16     be[d][x] = !be[d][x];
17     be[d][x + 1] = !be[d][x + 1];
18     be[d][x + 2] = !be[d][x + 2];
19     be[d][0] += 1;
20 }
21 int main()
22 {
23     char in;
24     while (in = getchar())
25     {
26         if (in == ‘\n‘ || in == ‘\r‘) break;
27         if (in != ‘ ‘) be[1][++n] = in - ‘0‘;
28     }
29     while (in = getchar())
30     {
31         if (in == ‘\n‘ || in == ‘\r‘) break;
32         if (in != ‘ ‘) af[++N] = in - ‘0‘;
33     }
34     //***************************************
35     be[2][0] = -1;
36     if (be[1][1] != af[1])
37     {
38         be[2][0] = 1;
39         for (int i = 1; i <= n; i++)
40             be[2][i] = be[1][i];
42         for (int i = 0; i <= n - 1; i++)
43             if (be[2][i] != af[i])
44                 pro(i, 2);
45         if (be[2][n] != af[n])
46             be[2][0] = -1;
47     }
48     for (int i = 1; i <= n - 1; i++)
49         if (be[1][i] != af[i])
50             pro(i, 1);
51     if (be[1][n] != af[n])
52         be[1][0] = -1;
53     //***************************************
54     int ans = (1 << 30);
55     for (int i = 1; i <= 2; i++)
56         if (be[i][0] != -1)
57             ans = ans < be[i][0] ? ans : be[i][0];
58     if (ans != (1 << 30)) printf("%d\n", ans);
59     else printf("impossible\n");
60     return 0;
61 }
时间: 2024-10-13 15:35:57

8469:特殊密码锁的相关文章

NOI OpenJudge 8469 特殊密码锁 Label贪心

描述 有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态. 然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转.当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮. 当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态. 输入两行,给出两个由0.1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸.输出至少需要进行的按按钮操作次数,如果无法实现

整理小朋友在noi.openjudge上的作业(4)

第四章(含小学奥数)计97题,已完成8题 4.1 算法之排序和算法性能   题目ID 标题 分数 尝试人数   1625 Sequence Median 10 90   1754 字符串数组排序问题 10 49   1999 日志排序 10 50   4363 瑞士轮 10 101 4.2 算法之数论   题目ID 标题 分数 尝试人数   1350 Euclid's Game 10 223   1486 A Funny Game 10 70   185 反正切函数的应用 10 44   241

特殊密码锁

总时间限制:  1000ms 内存限制:  1024kB 描述 有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态. 然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转.当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮. 当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态. 输入 两行,给出两个由0.1组成的等长字符串,表示当前/目标密码锁状态,其中0代表

openjudge8469特殊密码锁[贪心]

描述 有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态. 然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转.当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮. 当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态. 输入两行,给出两个由0.1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸.输出至少需要进行的按按钮操作次数,如果无法实现

iOS开发——高级技术&amp;密码锁功能的实现

密码锁功能的实现 一个ios手势密码功能实现 ipad/iphone 都可以用 没有使用图片,里面可以通过view自己添加 keychain做的数据持久化,利用苹果官方KeychainItemWrapper类 keychain存储的数据不会因为删除app而清除记录,请调用-(void)clear清除储存密码. 简单使用方式 下载后直接把 GesturePassword 下的GesturePassword文件丢到项目中去 在 TARGETS - Build Phases - "KeychainIt

密码锁

密码锁 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 153(129 users) Total Accepted: 135(126 users) Rating: Special Judge: No Description 小D在尝试打开一个很有挑战性的密码锁,这个锁上面一共有 n 个按钮用来打开. 小D必须输入之前设置好的密码序列才能打开这个锁.每次按下一个按钮,这个按钮要么陷入(这个表示小D猜对了密码当前这位的数并准备按密码序列

一个密码锁加密应用项目源码

源码ToolWizAppLock,一个密码锁应用,加密你的应用,照片,视频文件. 在生活中,你有没有担心过手机里的某些应用被别人偷看,比如微信聊天记录.短信.照片? 你是否担心一些重要图片,视频等重要资料被偷窥? 有了密码锁,您只需将不想被别人查看的应用在我这里锁住,设置好密码,就可以高枕无忧了! 您只需将重要的图片,视频等文件在我这里加密,再也不怕被别人窃取你的隐私了! 源码下载: http://code.662p.com/view/11470.html <ignore_js_op> 详细说

安卓应用程序密码锁的实现

功能: 1.应用程序程序中设置了密码锁,每当用户打开应用时,要弹出密码输入界面: 2.当用户按住home键,将程序隐在后台而非退出,经过一段时间后,再重新启动,也要弹出密码输入界面: 3.当应用在前台的时候,用户按住power电源键,关闭屏幕后,再点亮屏幕,这个时候也要弹出密码输入界面 实现方式: 1.针对功能1,每次启动应用进入主界面时,判断是否需要弹出密码输入界面: 2.关键点在于怎么判断程序是否处在前台跟后台. 判断方法: public static boolean isAppOnFore

【NOIP模拟赛】密码锁

题目描述 hzwer有一把密码锁,由N个开关组成.一开始的时候,所有开关都是关上的.当且仅当开关x1,x2,x3,…xk为开,其他开关为关时,密码锁才会打开. 他可以进行M种的操作,每种操作有一个size[i],表示,假如他选择了第i种的操作的话,他可以任意选择连续的size[i]个格子,把它们全部取反.(注意,由于黄金大神非常的神,所以操作次数可以无限>_<) 本来这是一个无关紧要的问题,但是,黄金大神不小心他的钱丢进去了,没有的钱他哪里能逃过被chenzeyu97 NTR的命运?>_