| 题目名称 | 4210. Sayaku,移动 |
|---|---|
| 输入输出 | movement.in/out |
| 难度等级 | ★★★ |
| 时间限制 | 200 ms (0.2 s) |
| 内存限制 | 512 MiB |
| 测试数据 | 10 |
| 题目来源 |
|
| 开放分组 | 全部用户 |
| 提交状态 | |
| 分类标签 | |
| 查看题解 | 分享题解 |
| 通过:12, 提交:21, 通过率:57.14% | ||||
|
|
100 | 0.095 s | 3.69 MiB | C++ |
|
|
100 | 0.095 s | 3.74 MiB | C++ |
|
|
100 | 0.098 s | 3.69 MiB | C++ |
|
|
100 | 0.099 s | 3.73 MiB | C++ |
|
|
100 | 0.100 s | 3.69 MiB | C++ |
|
|
100 | 0.103 s | 3.70 MiB | C++ |
|
|
100 | 0.106 s | 3.75 MiB | C++ |
|
|
100 | 0.112 s | 3.88 MiB | C++ |
|
|
100 | 0.130 s | 3.69 MiB | C++ |
|
|
100 | 0.144 s | 3.78 MiB | C++ |
| 本题关联比赛 | |||
| 期末考试0 | |||
| 关于 Sayaku,移动 的近10条评论(全部评论) |
|---|
Sayaku 闯入了影子魔女的结界,开始讨伐影子魔女。
影子魔女的结界十分奇特,是一颗完全二叉树,且完全二叉树是无限延伸的,即所有节点均有左子节点与右子节点,除了根(结界的入口)的所有节点均有父亲。
影子魔女把自己的分身使魔洒落在这个完全二叉树的一些节点上,这些节点构成一个 $n$ 个节点的连通块,保证这个连通块包含根节点,显然,这个连通块本身也是一棵二叉树。连通块上的每个节点都有影子魔女的使魔,Sayaku 到达过的地方如果有使魔,则会将其击败。如果一个地方没有使魔,Sayaku 也可以到那里去。Sayaku 也可以反复经过一个地方。
在长期的战斗中,Sayaku 丧失了大部分理智,为了防止在战斗中失控,Sayaku 必须利用自己的一台留音机来提示自己,她可以听这台留音机的命令。Sayaku 初始时将站在根上,在开始移动前,Sayaku 将向留音机录入一串指令,这串指令单个字符可以是:
向左走:提示 Sayaku 向当前节点的左儿子节点走;
向右走:提示 Sayaku 向当前节点的右儿子节点走;
向上走:提示 Sayaku 向当前节点的父亲走(若没有,则命令非法)。
录入指令后,留音机将会把指令无限复读下去。比如命令为“向左走”“向右走”,那么 Sayaku 会遵从 “向左走”“向右走”“向左走”“向右走”... 一直走下去。当 Sayaku 在这棵完全二叉树的根时,执行向上走是非法的,即你需要保证不可能出现这种情况。
现在,Sayaku 告诉了你使魔藏身的的这棵二叉树连通块的前序遍历,你需要寻找到一条尽量短的指令,使得 Sayaku 能够击败所有使魔从而击败影子魔女。
一行一个字符串,由 0123 中的字符组成,表示使魔藏身的的这棵二叉树连通块的前序遍历。
0:表示这是一个没有儿子的节点。
1:表示这是一个只有左子的节点。
2:表示这是一个只有右子的节点。
3:表示这是一个既有左子又有右子的节点。
一个整数,表示最短指令的长度。
1313000
3
333003003300300
15
对于样例输入 1,一种可行的最短指令为 “向左走”“向右走”“向上走”。
注意:本题标解常数极小,保证时间限制在 std 最大点用时五倍以上。
特殊性质 $\text{A}$:给定的联通块是一颗完全二叉树,即除了叶子节点每个节点都有左儿子和右儿子。
特殊性质 $\text{B}$:满足给定的联通块只有一个叶子节点,且其他点均只有一个左儿子。
大样例,所有大样例均无特殊性质。
luogu P5597。