#P1921. Bloxorz II
Bloxorz II
新生测试 (exa.pas/c/cpp) 题目描述 由于大灾难的发生,科学院已经连续有很多年没有新生了(这个世界中的科学院其实也 有大学的职能) 。于是这一年的新生测试就有里程碑一样的意义。作为科学院的顶级信息专 家,这一任务自然落到了你的头上。思来想去,你决定出这样的一个题,那就是Bloxorz游 戏。 所谓 Bloxorz游戏,如下图所示,就是在一个平台上有一个作为目标的 1×1的洞,以 及一个大小为 2×1×1的长方体。长方体可以沿着边在平台上滚动,但是不能与平台失去接 触面。 下面这张图反映了上图中的长方体向右滚动之后的局面。 而下面这张图就反映了向前方滚动之后的局面。 任务就是让长方体进入目标洞。当然,这时长方体应该是竖立的。 滚动一次叫做一步。你的题目就是对于一个给定的局面,计算至少需要多少步才能把长 方体滚到目标洞里面去。自然,对于新生来说这个题是一个很难的题。 被你虐了的新生感到很不服气。于是他们想了一个更难的题来让你做: 有一个无限大的平台以及一个建立在上面的坐标系。现在目标洞在(0, 0)处,长方体的 位置和状态(竖立、与x轴平行还是与 y轴平行)给定,计算至少需要多少步才能使长方体 进洞。 作为顶级信息专家……这当然难不倒你了。 输入格式 输入文件包含多组测试数据。 每组测试数据在一行内,格式为 C x y。其中 C为一个字母,x和 y是两个整数。 这表示长方体覆盖住了平台上的格子(x, y),且其状态为 C。 若 C为字母U,表明长方体是竖立的。 若 C为字母V,表明长方体与 x轴平行,且其覆盖的另一个格子为(x + 1, y)。 若 C为字母H,表明长方体与 y轴平行,且其覆盖的另一个格子为(x, y + 1)。 输入文件以 EOF结束。 输出格式 对于每组测试数据,在单独的一行内输出答案。 样例输入 U 0 0 H 0 0 V 1 0 样例输出 0 4 1 数据范围与约定 对于 20% 的数据,|x|, |y|≤100。 对于 100% 的数据,|x|, |y|≤109,输入数据不超过 100组。