AT_abc431_e [ABC431E] Reflection on Grid

题目描述

给定一个有 $H$ 行 $W$ 列的网格。我们将第 $i$ 行第 $j$ 列的格子称为 $(i, j)$。每个格子上至多放有一面镜子。 高桥站在 $(1,1)$ 格子的左侧,青木站在 $(H,W)$ 格子的右侧。高桥手持手电筒,从 $(1,1)$ 格子的左侧向右照射光线。这里认为手电筒的光不会发散,是一条直线光。 高桥的目标是通过利用网格中的镜子将手电筒的光传递给青木。 镜子的放置有三种类型。当光线照射到镜子时,光线会根据镜子的类型改变方向。每种镜子,对于不同的入射方向,其出射方向如下图所示。 - A型(未放置镜子) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc431_e/648607f97d7d3f431635b01d3abd1bda014150867e4e4afaf974f3755ee8213e.png) - B型(镜子放置在左上与右下的对角线上) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc431_e/4282f4f664de6966d7166bbafdd8f71dd5491316a5720f5018fc8e0cef5d80e4.png) - C型(镜子放置在右上与左下的对角线上) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc431_e/7ccbf73ab8ccf06e18de7c209beb2c6979332fb961dfa89a868e5ca4f7b35a62.png) 网格上的镜子放置情况由 $H$ 个长度为 $W$ 的字符串 $S_1,S_2,\ldots,S_H$ 给出。当 $S_i$ 的第 $j$ 个字符为 `A` 时,表示 $(i,j)$ 格子为A型;为 `B` 时为B型;为 `C` 时为C型。 高桥可以进行如下操作任意次以将光线传递给青木: - 选择一个格子,并将该格子的镜子类型更换为不同的类型。 请你求出将光线传递给青木至少需要多少次操作。 共有 $T$ 组测试数据,请分别求解每组的答案。

输入格式

输入由标准输入给出,格式如下: > $T$ $\mathrm{case}_1$ $\mathrm{case}_2$ $\vdots$ $\mathrm{case}_T$ 每组测试数据格式如下: > $H$ $W$ > $S_1$ > $S_2$ > $\vdots$ > $S_H$

输出格式

输出 $T$ 行,第 $i$ 行输出第 $i$ 组测试数据的答案。

说明/提示

### 样例解释 1 对于第一组数据,不需要进行任何操作即可将光线传递给青木。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc431_e/3995b5b9abac4083da7220d53536da2d1474f0f3e773c52336f515667a45dc38.png) 对于第二组数据,通过将 $(1,1)$ 处的镜子类型更换为A型、$(2,2)$ 处的镜子类型更换为B型,可以如图所示地将光线传递给青木。无法通过一步或更少的操作实现目标,因此答案为 $2$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_abc431_e/60160fc87854af696999b5748ca9a6f7e5f9a3eefa75576dce968935dfd43667.png) ### 数据范围 - $1\leq T$ - $1\leq H,W$ - $HW\leq 2\times 10^5$ - $S_i$ 为仅由`A`、`B`、`C`组成的长度为 $W$ 的字符串。 - $T$、 $H$ 、$W$ 均为整数。 - 所有测试数据中 $HW$ 之和不超过 $2\times 10^5$。 由 ChatGPT 5 翻译