loj#P4802. 「RMI 2023」Circles

「RMI 2023」Circles

题目描述

题目译自 Romanian Master of Informatics 2023 Day2 T1 「Circles

历史上最为顽皮的两位达契亚人——丹尼洛和斯特加诺突发奇想,决定挖一些毫无用处的隧道来捉弄后人。他们知道,未来的历史学家们会为这些莫名其妙的隧道绞尽脑汁,试图猜测它们的用途,可实际上,这些隧道压根儿没啥用。

他们找到一面巨大的墙,打算在这上面开挖。可惜的是,墙上有些地方坚不可摧,他们只能绕开这些区域。为了美观,隧道的入口必须是圆形的。

具体来说,这面墙可以看作一个笛卡尔平面,xx 坐标范围是 [0,M][0, M]yy 坐标范围是 [0,N][0, N]。那些坚不可摧的部分是边长为 11 的正方形,边与坐标轴平行,顶点位于整数坐标上。可挖掘区域的地图可以用一个二进制矩阵表示,矩阵有 NN 行(从 00N1N-1 编号)和 MM 列(从 00M1M-1 编号)。如果矩阵中第 ll 行第 cc 列的元素是 11,那么所有满足 cxc+1c \leq x \leq c+1lyl+1l \leq y \leq l+1 的点 (x,y)(x, y) 都可以被挖开。注意区分平面中的坐标 (x,y)(x, y) 和矩阵中元素的位置 (l,c)(l, c)

挖隧道时,他们会先选一个整数坐标 (x,y)(x, y) 作为隧道的中心,然后确定一个半径 rr,接着开始挖掘以 (x,y)(x, y) 为圆心、半径为 rr 的圆盘内的所有点。注意,这个圆盘包括内部的所有点,不仅仅是圆周上的点,而且圆盘必须完全位于定义的平面内。

他们希望隧道越显眼越好,所以想挖一个半径最大的隧道。为了施工方便,如果有多个半径最大的隧道,他们会挑一个最好挖的——也就是 yy 坐标最小的那个。如果还有多个选择,他们就选 xx 坐标最小的那个。

输入格式

第一行包含两个整数 NNMM,分别表示定义平面的范围和二进制矩阵的尺寸。

接下来的 NN 行,每行是一个长度为 MM 的字符串,由 01 组成,表示上面定义的矩阵元素。

输出格式

在一行中输出三个用空格分隔的整数 x,y,Rx, y, R(x,y)(x, y) 表示丹尼洛和斯特加诺将要挖掘的隧道中心的坐标,RR 表示圆的半径平方后取整的结果。如果找不到半径为正整数的圆,输出 0 0 0

5 6
011110
111110
011111
111111
011110

3 2 4

circles-explanation.png

3 3
010
101
010

0 0 0

数据范围与提示

对于所有输入数据,满足:

  • 1N,M3 0001 \leq N, M \leq 3\ 000

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 44 矩阵中恰好有四个格子是 11
22 99 矩阵中的 11 构成一个边与坐标轴平行的矩形。
33 1414 N,M50N, M \leq 50
44 1515 N,M600N, M \leq 600
55 2121 矩阵是随机生成的。
66 3737 无附加限制