CF2157B Expansion Plan 2

题目描述

你正在分析一个无限的网格,坐标为 $(X, Y)$(特别地,$(0, 0)$ 正上方的格子是 $(0, 1)$,正右方的格子是 $(1, 0)$)。初始时,只有 $(0, 0)$ 这个格子是黑色的。 你得到一个长度为 $n$ 的字符串 $a_1a_2\ldots a_n$,每个字符都是 $\texttt{"4"}$ 或 $\texttt{"8"}$,描述了 $n$ 次扩展操作。对于每一次 $i$,所有格子会同时进行如下操作: - 如果 $s_i = \texttt{"4"}$:对于每一个格子,若它与某个黑色格子正交相邻(即有一条边相接),它会变成黑色;否则,它的状态不变。 - 如果 $s_i = \texttt{"8"}$:对于每一个格子,若它与某个黑色格子正交或对角相邻(即有一条边或一个角相接),它会变成黑色;否则,它的状态不变。 请你判断,在给定操作结束后,$(x, y)$ 这个格子是否是黑色的。

输入格式

每组测试数据包含多个测试用例。第一行是测试用例数量 $t$($1 \le t \le 10^4$)。 每个测试用例描述如下: 第一行包含三个整数 $n$、$x$、$y$($1 \le n \le 2 \cdot 10^5, -10^9 \le x, y \le 10^9$)——扩展操作次数,以及你关心的格子的坐标。 第二行包含一个长度为 $n$ 的字符串 $s$,仅包含字符 $\texttt{"4"}$ 和 $\texttt{"8"}$,表示每次扩展操作的类型。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果 $(x, y)$ 在所有扩展操作后是黑色的,输出 $\texttt{YES}$;否则,输出 $\texttt{NO}$。 输出对大小写不敏感(例如,$\texttt{YES}$、$\texttt{Yes}$、$\texttt{yes}$、$\texttt{yEs}$ 都会被认为是正解)。

说明/提示

前三个测试用例如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2157B/f65818e5778bb314fc1003ede156ec5da4bdb97447378d1ef3d1643c26ba8bfe.png) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2157B/effba6f8c54b42ecaf80f15dcc08cdc2f8ba664cb66aa07371846286c21f7211.png) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2157B/bd77154605385abd6c450bf34f71fb3d9ce2effa2d9d3efa44ef0f9f6573d4d9.png) 在第一个测试用例中,经过字符串 $\texttt{"888"}$ 的扩展操作后,$(3, 3)$ 格子是黑色的,因此答案是 $\texttt{YES}$。 在第二个测试用例中,经过字符串 $\texttt{"4884"}$ 的扩展操作后,$(5, 1)$ 格子仍然是白色的。 由 ChatGPT 5 翻译