CFCF2159B.Rectangles
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个二进制网格 G,其尺寸为 n×m。
我们将一个矩形定义为元组 (u,d,l,r),需满足以下条件:
- 1≤u<d≤n;
- 1≤l<r≤m;
- 单元格 (u,l)、(u,r)、(d,l)、(d,r) 均为 1。
矩形 (u,d,l,r) 的面积定义为 (d−u+1)⋅(r−l+1)。
例如,考虑如下二进制网格:
110000111000101
在这里,你可以得到两个矩形 (1,2,1,3) 和 (1,3,3,5),它们的面积分别为 6 和 9。
对于每个单元格 (i,j),请找到所有满足 u≤i≤d 且 l≤j≤r 的矩形 (u,d,l,r) 中面积的最小值。
如果不存在这样的矩形,则输出 0。
注:一个二进制网格是指每个单元格只包含 0 或 1。第 i 行第 j 列的单元格记作 (i,j)。
注意,这些例子中只存在上述两个矩形。例如,(1,1,1,5) 不是矩形,因为 u<d 不满足。
输入格式
每组测试数据包含多个测试用例。第一行为整数 t(1≤t≤104),表示测试用例组数。
每一组测试数据的第一行包含两个整数 n 和 m(2≤n,m,n⋅m≤250000)。
接下来的 n 行,每行包含一个长度为 m 的字符串,表示 G 的第 i 行(Gi,j∈{0,1})。
保证所有测试用例的 n⋅m 总和不超过 250000。
输出格式
对于每组测试用例,输出一个 n 行 m 列的网格。对于第 i 行第 j 列,若存在至少一个满足 u≤i≤d 且 l≤j≤r 的矩形 (u,d,l,r),请输出所有此类矩形的最小面积;否则输出 0。
输入输出样例
输入#1
3 3 5 10101 10100 00101 4 6 011101 010001 100010 101110 5 5 11100 10110 11111 01101 00111
输出#1
6 6 6 9 9 6 6 6 9 9 0 0 9 9 9 0 10 8 8 10 10 0 10 8 8 10 10 10 10 8 8 10 0 10 10 8 8 10 0 6 6 6 0 0 6 6 4 4 0 6 4 4 4 6 0 4 4 6 6 0 0 6 6 6
说明/提示
第一个测试用例的讲解见题面。
对于第三个测试用例,共有 6 个面积最小的覆盖至少一个单元格的矩形:
- (1,3,1,2) ,面积为 6;
- (1,2,1,3) ,面积为 6;
- (3,4,2,3) ,面积为 4;
- (2,3,3,4) ,面积为 4;
- (3,5,4,5) ,面积为 6;
- (4,5,3,5) ,面积为 6。