先证明一个引理:答案>=2*max(w,h)+2
原因是即使每一个格点都是关键点,也能选出1*max(w,h)的无关键点矩形。
实际上,这个引理使得答案一定跨过某一条中线。
下面统计过直线x=w/2的情况,最后翻转一下坐标即可得到答案。
使用单调栈+线段树维护。
从中间引出一条直线x=w/2把平面劈成两半。
把点按照y坐标从小到大排序。枚举一个点,上边界一定经过这个点。
如果没有注意到前述引理的话,需要使用分治,时间复杂度多一个log。
先证明一个引理:答案>=2*max(w,h)+2
原因是即使每一个格点都是关键点,也能选出1*max(w,h)的无关键点矩形。
实际上,这个引理使得答案一定跨过某一条中线。
下面统计过直线x=w/2的情况,最后翻转一下坐标即可得到答案。
使用单调栈+线段树维护。
从中间引出一条直线x=w/2把平面劈成两半。
把点按照y坐标从小到大排序。枚举一个点,上边界一定经过这个点。
如果没有注意到前述引理的话,需要使用分治,时间复杂度多一个log。