Sorry, my mistake. Didn't read the question carefully. So, we need to change a little: c(x,y) = max t, 0 <=t <= min ( a[x,y], b[x,y] ] b(x-t+1,y) >= t && a(x, y-t+1) >= t this step needs O(n). So total time is O(n^3) and space is O(n^2).
【在 g*********s 的大作中提到】 : 如果是黑边白芯呢?
l*y
7 楼
Could you please elaborate the solution? Thanks a lot!
【在 g***s 的大作中提到】 : Sorry, my mistake. Didn't read the question carefully. : So, we need to change a little: : c(x,y) = max t, : 0 <=t <= min ( a[x,y], b[x,y] ] : b(x-t+1,y) >= t && a(x, y-t+1) >= t : this step needs O(n). So total time is O(n^3) and space is O(n^2).
c*0
8 楼
My solution: 我们首先第一次循环 一列一列的 找到每一列的所有的连续黑边 每一个黑边用一个坐 标 (x,y)和垂直长度 l 表示 之后一行一行的循环 找到每一行所有连续的黑边 每个黑边用(x,y)加水平长度l表示 之后对每个竖向的黑边 check 存不存在对应的一个竖向的黑边和两个水平的黑边,这 个check应该是很快的 O(1)或者O(lgn) 取决于怎么存连续黑边 这样是不是O(n^2)的复杂度?
g*s
9 楼
0 <=t <= a[x,y] 这个保证上边是黑的 0 <=t <= b[x,y] 这个保证右边是黑的 b(x-t+1,y) >= t 这个保证左边是黑的 a(x, y-t+1)>= t 这个保证下边是黑的 W W B B B B W B B B W B W W B W W B B B B B B B W W W W W B W W W W W W give a sample, c(6,6) = 4 a(6,6) = 4 b(6,6) = 5 b(3,6) = 4 >=4 a(6,3) = 6 >=4
【在 l*********y 的大作中提到】 : Could you please elaborate the solution? : Thanks a lot!
g*s
10 楼
~~~this is not easy to get in O(1) or O(lgn). sample: all (1,y) = B, all (2, even number) = B now, there are O(n) 水平边. B BB B BB B BB B BB B
【在 g***s 的大作中提到】 : 0 <=t <= a[x,y] 这个保证上边是黑的 : 0 <=t <= b[x,y] 这个保证右边是黑的 : b(x-t+1,y) >= t 这个保证左边是黑的 : a(x, y-t+1)>= t 这个保证下边是黑的 : W W B B B B : W B B B W B : W W B W W B : B B B B B B : W W W W W B : W W W W W W
U*R
14 楼
I like this solution!
【在 g***s 的大作中提到】 : 0 <=t <= a[x,y] 这个保证上边是黑的 : 0 <=t <= b[x,y] 这个保证右边是黑的 : b(x-t+1,y) >= t 这个保证左边是黑的 : a(x, y-t+1)>= t 这个保证下边是黑的 : W W B B B B : W B B B W B : W W B W W B : B B B B B B : W W W W W B : W W W W W W