#P2180. Bale Figures
Bale Figures
题目描述
奶牛喜欢用干草捆搭建形状。每个新形状由 N(1 ≤ N ≤ 25,000)个 1×1×1 的立方体干草捆构成。 第 1 个草捆放置在地面上。放置完第 1 个草捆后,从第 2 个到第 N 个的每个后续草捆,都需要通过相对于已放置草捆的正确相对位置进行连接。例如,考虑以下情况:
草捆 1:位于地面
草捆 2:在草捆 1 的右侧(RIGHT Bale 1)
草捆 3:在草捆 2 的前方(FRONT Bale 2)
草捆 4:在草捆 3 的前方(FRONT Bale 3)
这将形成一个倒置的 L 形结构:
+--+--+
1-> / / /| <-2
+--+--+ +
| / /|/
++--+ +
/ /|/ <-3
+--+ +
| |/ <-4
+--+
添加另一个草捆:
草捆 5:在草捆 1 的上方(OVER Bale 1)
这将增加结构的高度。 +--+
/ /|
+--+ +--+
5-> | |/ /| <-2
+--+--+ +
1-> | / /|/
++--+ +
/ /|/ <-3
+--+ +
| |/ <-4
+--+
但如果添加指令:
草捆 6:在草捆 4 的后方(BACK Bale 4)
则会导致结构无效,因为草捆 3 和草捆 6 会重叠。 给定 N 个草捆及其放置方式(如上述描述),若结构有效,输出其暴露表面积。暴露面定义为未被其他草捆的任何面接触,且不接触地面的面(即地面上立方体的底面不算暴露面)。若结构无效,输出 -1。任何草捆不会放置在距离第一个草捆超过 25 个草捆宽度的位置,也不会放置在地面以下。 输入格式 第 1 行:单个整数 N 第 2 行到第 N 行:描述草捆 2 到 N 的放置方式,格式为 “j X”。第 2 行描述草捆 2,第 3 行描述草捆 3,依此类推。字母 “X” 可以是:“L”(左)、“R”(右)、“F”(前)、“B”(后)、“O”(上)、“U”(下)。草捆可以悬空放置,无需下方支撑。
输出格式
第 1 行:有效结构的暴露表面积,若无效则输出 -1。
输入样例 1
5
1 R
2 F
3 F
1 O
输出样例 1
18