题目名称 507. 拯救
输入输出 savey.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarcqw 于2010-11-17加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:11, 提交:32, 通过率:34.38%
Gravatarbelong.zmx 100 0.026 s 0.88 MiB Pascal
Gravatardonny 100 0.026 s 0.88 MiB Pascal
Gravatar再见 100 0.029 s 8.09 MiB C++
Gravatarybh 100 0.032 s 1.26 MiB Pascal
Gravatar苏轼 100 0.065 s 6.42 MiB C++
GravatarOIdiot 100 0.073 s 0.40 MiB C++
Gravatarbelong.zmx 100 0.135 s 0.12 MiB Pascal
Gravatarmaxiem 100 0.136 s 5.84 MiB Pascal
Gravatarnick09 100 0.145 s 0.23 MiB Pascal
Gravatar王者自由 100 0.145 s 0.23 MiB Pascal
本题关联比赛
20101117
关于 拯救 的近10条评论(全部评论)
Gray Code
GravatarOIdiot
2014-03-15 09:25 1楼

507. 拯救

★☆   输入文件:savey.in   输出文件:savey.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

正义之士被恶魔抓了,被关在小黑屋里,无法继续他的正义事业,你决定去拯救他。

关正义之士的小黑屋迅速被你打开,可是正义之士却被恶魔用一把锁给锁住了。这把锁包含了$N$个小锁。只有打开前$K-2$个锁,且锁上第$K-1$个锁,才能改变第$K$个锁的状态(打开或锁上该锁),第1个锁可以任意改变状态,当第1个锁锁上时第2个锁就可以改变状态。

为了知道你到底是要留下来开锁,还是“走为上”,你需要知道到底需要多少次操作才能开锁(打开或锁上一把锁算一次操作,只有当$N$个小锁都被打开进才算开了锁)。

【输入格式】

第一行为一个$N$(小锁的个数,$1\leq N\leq 1000$)。

第二行为$n$个整数$a_1,a_2,\cdots,a_n$(每个都是0或者1),中间用单个空格隔开。如果是$a_i=1$,表示第$i$个锁是锁着的,反之表示该锁已被打开。

【输出格式】

包括一个数,表示最少要操作的次数。

【输入样例】

4
1 0 1 0

【输出样例】

6

【样例说明】

1010-->1110-->0110-->0100-->1100-->1000-->0000

【数据范围与约定】

对于40%的数据,有$N\leq 30$;

对于100%的数据,有$N\leq 1000$。