P15616 [ICPC 2022 Jakarta R] Storing Eggs

题目描述

你有一个鸡蛋盒,可以表示为一个 $3 \times N$ 的网格。网格包含 $3$ 行,编号从 $1$ 到 $3$,以及 $N$ 列,编号从 $1$ 到 $N$。位于第 $r$ 行、第 $c$ 列的单元格记作 $(r, c)$。每个单元格要么是**可用**的,要么是**不可用**的;每个可用单元格最多只能放置 $1$ 个鸡蛋,而不可用单元格顾名思义不能使用。 你希望将恰好 $K$ 个鸡蛋放入鸡蛋盒的可用单元格中,使得任意两个最接近的鸡蛋之间的距离最大化。位于单元格 $(r_1, c_1)$ 的鸡蛋与位于单元格 $(r_2, c_2)$ 的鸡蛋之间的距离可以用欧几里得距离计算,即 $\sqrt{(r_1 - r_2)^2 + (c_1 - c_2)^2}$。 请确定任意两个最接近的鸡蛋之间可能的最大距离,或者判断是否无法将 $K$ 个鸡蛋放入你的鸡蛋盒中。

输入格式

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

输出格式

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

说明/提示

#### 样例输入/输出 #1 的解释 任意两个最接近的鸡蛋之间的最大距离只能通过将鸡蛋放入单元格 $(3,1)$ 和 $(1,5)$ 来实现,此时两个(最接近的)鸡蛋之间的距离为 $\sqrt{20}$。 翻译由 DeepSeek 完成