#P16549. [Bapc2025]Linguistic Labyrinth

[Bapc2025]Linguistic Labyrinth

题目描述

在三维空间中,所有满足

1x,y,zn1\le x,y,z\le n

的整点 (x,y,z)(x,y,z) 构成一个 n×n×nn\times n\times n 网格。

每个点上都有一个字符,字符为 BAPC 之一。

一个“弯曲单词 BAPC”由四个点 B,A,P,CB,A,P,C 组成,并满足:

  1. 四个点上的字符依次为 BAPC
  2. 三点 B,A,PB,A,P 构成直角,即向量 BA\overrightarrow{BA}AP\overrightarrow{AP} 垂直;
  3. 三点 A,P,CA,P,C 构成直角,即向量 AP\overrightarrow{AP}PC\overrightarrow{PC} 垂直。

换言之:

BAAP=0,\overrightarrow{BA}\cdot\overrightarrow{AP}=0, APPC=0.\overrightarrow{AP}\cdot\overrightarrow{PC}=0.

两个直角不必与坐标轴平行。

求网格中弯曲单词 BAPC 的数量。

输入格式

第一行包含一个整数 nn1n221\le n\le 22),表示网格边长。

随后包含 nn 个数据块,每个数据块有 n+1n+1 行:

  • 第一行是一个连字符 -,仅用于提高可读性;
  • 接下来 nn 行,每行包含 nn 个字符,每个字符为 BAPC 之一,表示三维网格中一个水平层的全部标签。

输出格式

输出一个整数,表示网格中弯曲单词 BAPC 的总数。

样例 1

输入

1
-
B

输出

0

样例 2

输入

2
-
PA
PB
-
CC
PB

输出

2

样例 3

输入

3
-
BBB
BCB
BCB
-
BBC
CBA
BBB
-
BBB
BPB
BBB

输出

2

样例说明

样例 3 的三维示意图;高亮字符组成两组弯曲单词 BAPC

样例 3 中共有两组满足条件的 BAPC