#YHCSPJMN120001. 特殊护盾
特殊护盾
特殊护盾
题目背景
在育华学校组织的编程实践活动中,模拟了一个有趣的游戏场景。面条老师在游戏里需要通过一系列房间,每个房间有不同属性的守卫。根据守卫属性,要合理规划特殊护盾的购买数量,确保在通过所有房间的同时,特殊护盾的数量最少。
题目描述
游戏中有 个房间,每个房间前有一个守卫,守卫属性分为:
- 内鬼守卫(0):修复之前消耗的所有普通和特殊护盾。
- 普通守卫(1):消耗 1 张普通护盾通过。
- 特殊守卫(2):消耗 1 张特殊护盾通过(普通护盾无法通过 )。
面条老师初始有无限普通护盾,可提前购买特殊护盾。需计算最少购买多少特殊护盾,才能保证通过所有房间。
输入格式
- 第一行:正整数 ,表示守卫数量。
- 第二行: 个整数,依次表示每个守卫的属性(0、1、2 )。
输出格式
输出一个整数,为最少需要购买的特殊护盾数量。
样例
样例输入 1
6
1 2 0 1 2 2
样例输出 1
2
样例解释
购买 2 个特殊护盾:
实际流程:
- 守卫 1(普通 ):消耗普通护盾 → 普通护盾剩余无限(不影响 )。
- 守卫 2(特殊 ):消耗 1 个特殊护盾 → 剩余 1(初始购买 2 )。
- 守卫 3(内鬼 ):修复所有消耗 → 特殊护盾恢复为 2(购买的数量,消耗的 1 被修复 )。
- 守卫 4(普通 ):消耗普通护盾。
- 守卫 5(特殊 ):消耗 1 个特殊护盾 → 剩余 1。
- 守卫 6(特殊 ):消耗 1 个特殊护盾 → 剩余 0。
总消耗 2 个特殊护盾。
数据规模与测试点
测试点编号 | 特殊说明 | 其他 |
---|---|---|
#1~#2 | 无内鬼守卫(全为 1 或 2 ) | |
#3~#4 | 无普通守卫(全为 0 或 2 ) | |
#5~#10 | 所有守卫类型随机出现 |
相关
在下列比赛中: