定义一个正方形$2r\times 2r$,左上角$r\times r$为红,右上角$r\times r$为绿,左下角$r*r$为黄,右下角$r\times r$为蓝:符合条件的正方形。
给一个随机颜色矩阵,询问$q$次:左上角$(x1,y1)$-右下角$(x2,y2)$中最大面积的这样正方形。$n\leq 500,q\leq3*10^5$
题目数据可知,通过预处理,使得询问$O(1)$或者$O(\log n)$。
首先可以预处理$(x,y)$这个点是否存在$2r$的正方形。(通过不同颜色的二维前缀和$O(1)$判断)。
对于一个左上角$(x1,y1)$-右下角$(x2,y2)$是否存在$2r$的正方形。可以预处理$2r$正方形的二维前缀和,然后计算即可。
对于每个询问,由于存在$2r$的正方形,一定存在$2R,R<r$的正方形,存在单调性,就可以二分查询左上角$(x1+2mid,y1+2*mid)$-右下角$(x2,y2)$的区间是否存在$2mid$的正方形
$O(n^3+n\log n)$
代码
1 |
|