#P15616. [ICPC 2022 Jakarta R] Storing Eggs

[ICPC 2022 Jakarta R] Storing Eggs

说明

你有一个鸡蛋盒,可以表示为一个 3×N3 \times N 的网格。网格包含 33 行,编号从 1133,以及 NN 列,编号从 11NN。位于第 rr 行、第 cc 列的单元格记作 (r,c)(r, c)。每个单元格要么是可用的,要么是不可用的;每个可用单元格最多只能放置 11 个鸡蛋,而不可用单元格顾名思义不能使用。

你希望将恰好 KK 个鸡蛋放入鸡蛋盒的可用单元格中,使得任意两个最接近的鸡蛋之间的距离最大化。位于单元格 (r1,c1)(r_1, c_1) 的鸡蛋与位于单元格 (r2,c2)(r_2, c_2) 的鸡蛋之间的距离可以用欧几里得距离计算,即 (r1r2)2+(c1c2)2\sqrt{(r_1 - r_2)^2 + (c_1 - c_2)^2}

请确定任意两个最接近的鸡蛋之间可能的最大距离,或者判断是否无法将 KK 个鸡蛋放入你的鸡蛋盒中。

输入格式

输入以两个整数 NN KK1N1001 \leq N \leq 1002K3N2 \leq K \leq 3N)开始,分别表示鸡蛋盒的列数和鸡蛋数量。接下来 33 行,每行包含一个长度为 NN 的字符串 SrS_r,字符串仅由字符 '.''#' 组成。字符串 SrS_r 的第 cc 个字符表示鸡蛋盒中单元格 (r,c)(r, c) 的状态。如果 Sr,c=.S_{r,c} = \tt{.},则单元格 (r,c)(r, c) 可用;如果 Sr,c=#S_{r,c} = \tt{\#},则单元格 (r,c)(r, c) 不可用。

输出格式

如果可以将 KK 个鸡蛋放入你的鸡蛋盒中,则在一行中输出一个实数,表示任意两个最接近的鸡蛋之间可能的最大距离。只要你的答案的绝对误差或相对误差不超过 10610^{-6},即被视为正确。

如果无法将 KK 个鸡蛋放入你的鸡蛋盒中,则在一行中输出 1-1

5 2
#....
.....
....#
4.472136

提示

样例输入/输出 #1 的解释

任意两个最接近的鸡蛋之间的最大距离只能通过将鸡蛋放入单元格 (3,1)(3,1)(1,5)(1,5) 来实现,此时两个(最接近的)鸡蛋之间的距离为 20\sqrt{20}

翻译由 DeepSeek 完成