#237. [Sleeping Cup #10] Signal Traversal
[Sleeping Cup #10] Signal Traversal
注意
本题需要使用文件读写(traversal.in / traversal.out)。
题目背景
Sleeping Jellyfish 特别喜欢玩 Minecraft,当他成为 年老玩家时,他发现:红石挺有趣的。于是,他一边看视频一边实操,终于在一个下午学会了所有的红石元件的使用方法。
题目描述
在 Minecraft 游戏中,红石线路是一种重要的信号传输系统。
现在,我们有一棵由 个红石元件组成的完全二叉树,其中 号结点为根, 号结点的两个儿子(如果有的话)分别是 号结点和 号结点。
游戏中共有 种不同的元件,编号分别为 ,其中 号结点上的元件编号为 。
你被要求扮演一个红石信号,手里握着一个初始值为 的变量 (红石信号强度),从 号结点出发:
- 如果 或 ,你结束扮演。
- 你得到 分。
- 根据当前所在的结点的元件改变 值,具体规则见下表。
- 如果你位于二叉树的某个叶子结点,你结束扮演。
- 你前往当前结点的某个儿子,然后回到第 步重新执行本流程,直至扮演结束。
问扮演结束时你的最大得分是多少?
| 元件编号 | 规则 |
|---|---|
| 空气:将 赋值为 | |
| 开关:将 赋值为 | |
| 红石块:将 赋值为 | |
| 红石粉:将 减少 | |
| 红石中继器(1):将 先增加 ,再减少 | |
| 红石中继器(2):将 先增加 ,再减少 | |
| 红石中继器(3):将 先增加 ,再减少 | |
| 红石中继器(4):将 先增加 ,再减少 |
输入格式
第一行一个正整数 。
第二行 个非负整数 。
数据保证当且仅当 时有 。
输出格式
一行一个非负整数表示你的最大得分。
样例
15
1 3 2 5 7 4 0 3 4 0 2 5 6 0 4
4