A1782 | 海贼宝藏密码
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
时限 :1s
内存限制: 256MB
海贼王薯片准备将世界各地抢来的宝藏放在一个巨大的保险柜中。
保险箱的密码由 $n$ 个正整数组成,$n$ 最大为 1000。王薯片很喜欢逐渐变大的东西,例如烟花,膨胀的气球,憋气的河豚等等。所以王薯片的密码也是一串逐渐变大的数字 ,即 $A_1$ < $A_2$ < ... < $An$ (严格递增)
但是王薯片记性很不好,他记不太住这 $n$ 个数的密码。所以他想尽可能地简化密码。
王薯片简化密码的方式如下,找到密码序列的其中一段 连续 的子序列然后挖空,如果当前序列还原密码的方式是唯一的,那么就说明简化成功。
例如 :
$n = 5$ 密码 是 $[2 ,4, 5, 6 ,8]$ ,那么 王薯片可以挖空成为$[2,4,\_,6,8]$ ,这样因为序列是递增的,所以还原方法只能在挖空处填上 $5$。但是不能挖空成为 $[2,4,\_,\_,8]$这样还原密码就有可能是 $[2,4,5,7,8]$、 $[2,4,6,7,8]$、 $[2,4,5,6,8]$ 三种可能,这样的简化是失败的。
王薯片很懒,他只想挖空一次。他现在想知道最少需要记住多少个密码数字?
内存限制: 256MB
海贼王薯片准备将世界各地抢来的宝藏放在一个巨大的保险柜中。
保险箱的密码由 $n$ 个正整数组成,$n$ 最大为 1000。王薯片很喜欢逐渐变大的东西,例如烟花,膨胀的气球,憋气的河豚等等。所以王薯片的密码也是一串逐渐变大的数字 ,即 $A_1$ < $A_2$ < ... < $An$ (严格递增)
但是王薯片记性很不好,他记不太住这 $n$ 个数的密码。所以他想尽可能地简化密码。
王薯片简化密码的方式如下,找到密码序列的其中一段 连续 的子序列然后挖空,如果当前序列还原密码的方式是唯一的,那么就说明简化成功。
例如 :
$n = 5$ 密码 是 $[2 ,4, 5, 6 ,8]$ ,那么 王薯片可以挖空成为$[2,4,\_,6,8]$ ,这样因为序列是递增的,所以还原方法只能在挖空处填上 $5$。但是不能挖空成为 $[2,4,\_,\_,8]$这样还原密码就有可能是 $[2,4,5,7,8]$、 $[2,4,6,7,8]$、 $[2,4,5,6,8]$ 三种可能,这样的简化是失败的。
王薯片很懒,他只想挖空一次。他现在想知道最少需要记住多少个密码数字?
输入格式
输入第一行一个正整数 $n$ 表示密码的长度。$(1<=n<=1000)$
输入第二行 $n$ 个正整数 $A_i$ 表示密码数字,数据保证($1<=$$A_1$ < $A_2$ < ... < $An$ $< =1000$)
输入第二行 $n$ 个正整数 $A_i$ 表示密码数字,数据保证($1<=$$A_1$ < $A_2$ < ... < $An$ $< =1000$)
输出格式
输出第一行一个正整数表示经过简化后最短需要记忆的密码数字个数是多少。
输入输出样例
输入 #1
5 2 4 5 6 7
输出 #1
3
输入 #2
5 1 2 3 4 5
输出 #2
1
在样例1 中,王薯片挖空成为$[2,4,\_,\_,7]$ 这样就能正确地还原密码,此时王薯片只需要记住三个数字 $(2,4,7)$,为最少密码数。
在样例2中, 因为 $A_i$ 的取值范围是 1 到 1000,所以王薯片可以挖空成为 $[ \_,\_,\_,\_ 5]$ ,这样还原密码就只能是 $[1,2,3,4,5]$ , 这时王薯片只需要记住 $5$ 这个数字,为最少密码数。
在样例2中, 因为 $A_i$ 的取值范围是 1 到 1000,所以王薯片可以挖空成为 $[ \_,\_,\_,\_ 5]$ ,这样还原密码就只能是 $[1,2,3,4,5]$ , 这时王薯片只需要记住 $5$ 这个数字,为最少密码数。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?