CF690B1 Recover Polygon (easy)
题目描述
僵尸们正在他们的秘密巢穴中集结!Heidi 将会全力出击,一举消灭他们。但有一个小问题……在她行动之前,她需要知道巢穴的位置。而她掌握的情报并不太好。
Heidi 知道,巢穴可以表示为一个在整数格点上的矩形,其边平行于坐标轴。多边形的每个顶点都位于格点上。对于每一个格点单元,Heidi 可以检测僵尸污染等级。这个等级是一个介于 $0$ 到 $4$ 之间的整数,等于该单元格四个角中有多少个角在矩形内部或边界上。
作为测试,Heidi 想要检查她的僵尸污染等级检测器是否正常工作。给定检测器的输出,Heidi 想知道这些结果是否可能由一个单一的、面积非零的、矩形形状的巢穴(边平行于坐标轴)产生。

输入格式
每个测试用例的第一行包含一个整数 $N$,表示格点网格的大小($5 \leq N \leq 50$)。接下来的 $N$ 行每行包含 $N$ 个字符,描述了每个格点单元的僵尸污染等级。每一行的每个字符都是 $0$ 到 $4$ 之间的数字。
格点单元的顺序与上图一致:行按照 $y$ 坐标递减的顺序排列,在同一行内,格点单元按照 $x$ 坐标递增的顺序排列。这意味着第一行对应坐标为 $(1,N),\ldots,(N,N)$ 的格点单元,最后一行对应坐标为 $(1,1),\ldots,(N,1)$ 的格点单元。
输出格式
输出的第一行应为 Yes,如果存在一个面积非零、四个顶点都在格点上的矩形巢穴(边平行于坐标轴),使得检测到的僵尸污染等级与输入一致;否则输出 No。
说明/提示
如果存在巢穴,则它必须是矩形(即顶点为 $(x_1, y_1)$、$(x_1, y_2)$、$(x_2, y_1)$、$(x_2, y_2)$ 的格点),面积非零,并且完全包含在网格内(即 $0 \leq x_1 < x_2 \leq N$,$0 \leq y_1 < y_2 \leq N$),且检测到的僵尸污染等级与输入一致。
由 ChatGPT 4.1 翻译