题目

在 \(N\times M\) 的网格中,有 \(P\) 个矩形建筑,求一个最大边长的正方形,使得网格中能找到一个放置正方形的地方,不会与建筑重合。

保证 \(N,M\le 10^6,P\le 40000\)。

个人思路(错解)

对于一个建筑 \((a,b)\) ,我们扩展出三个点 \((a,b+1),(a+1,b),(a+1,b+1)\) ,并从这三个点开始寻找最大的那个正方形。

至于如何寻找,使用类似于求最长连续 \(0\) 序列的方法,使用线段树维护。

然而这样的方法很容易说明是错的。

正解

如果有两条在 \(x\) 轴上的扫描线 \(l\) 与 \(r\),表示 \(l\sim r-1\) 之间可以放边长为 \(r-l\) 的正方形。

期望在 \(l\) 与 \(r\) 间放一个边长为 \(r-l+1\) 的矩形。

那么假如我们能在两条扫描线间找到最大空隙 \(ms\) 。

如果 \(r-l+1\le ms\),那么可以放,接下来 \(r+1\)。

如果 \(r-l+1>ms\),便不能放,因此 \(l+1\)。由于 \(l\sim r-1\) 之间可以放边长为 \(r-l\) 的正方形,\(l+1\sim r-1\) 之间便可以放边长为 \(r-l-1\) 的正方形。所以 \(r\) 不用变。

现在问题就是如何求空隙。

显然可以使用线段树,维护最大连续 \(0\)。每个位置的数代表被几个障碍包含。

当 \(r+1\) 时,加入左边界在 \(x=r\) 上的矩形。

当 \(l+1\) 时,删除右边界在 \(x=l-1\) 上的矩形。

如何维护最大连续 \(0\)?

我们可以维护 \(num,lnum,rnum\) 分别表示最大连续 \(0\),左起最大连续 \(0\),右起最大连续 \(0\)。

注意到这道题要支持区间添加与区间删减,且删减区间与添加区间一一对应,再加上一个区间只要有 \(add\) 标记那么最大连续 \(0\) 一定为 \(0\),所以我们可以不下传标记。

代码就不传了,交不了。

「题解」「JZOJ-4238」纪念碑的更多相关文章

  1. 「ZJOI2019」&「十二省联考 2019」题解索引

    「ZJOI2019」&「十二省联考 2019」题解索引 「ZJOI2019」 「ZJOI2019」线段树 「ZJOI2019」Minimax 搜索 「十二省联考 2019」 「十二省联考 20 ...

  2. 「题解」:[loj2763][JOI2013]现代豪宅

    问题 A: 现代豪宅 时间限制: 1 Sec  内存限制: 256 MB 题面 题目描述 (题目译自 $JOI 2013 Final T3$「現代的な屋敷」) 你在某个很大的豪宅里迷路了.这个豪宅由东 ...

  3. 「题解」「美团 CodeM 资格赛」跳格子

    目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...

  4. 「题解」「HNOI2013」切糕

    文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最 ...

  5. 「题解」JOIOI 王国

    「题解」JOIOI 王国 题目描述 考场思考 正解 题目描述 点这里 考场思考 因为时间不太够了,直接一上来就着手暴力.但是本人太菜,居然暴力爆 000 ,然后当场自闭- 一气之下,发现对 60pts ...

  6. 【题解】「P6832」[Cnoi2020]子弦

    [题解]「P6832」[Cnoi2020]子弦第一次写月赛题解( 首先第一眼看到这题,怎么感觉要用 \(\texttt{SAM}\) 什么高科技的?结果一仔细读题,简单模拟即可. 我们不难想出,出现最 ...

  7. 「题解报告」 P3167 [CQOI2014]通配符匹配

    「题解报告」 P3167 [CQOI2014]通配符匹配 思路 *和?显然无法直接匹配,但是可以发现「通配符个数不超过 \(10\) 」,那么我们可以考虑分段匹配. 我们首先把原字符串分成多个以一个通 ...

  8. [LOJ 6031]「雅礼集训 2017 Day1」字符串

    [LOJ 6031] 「雅礼集训 2017 Day1」字符串 题意 给定一个长度为 \(n\) 的字符串 \(s\), \(m\) 对 \((l_i,r_i)\), 回答 \(q\) 个询问. 每个询 ...

  9. [LOJ 6030]「雅礼集训 2017 Day1」矩阵

    [LOJ 6030] 「雅礼集训 2017 Day1」矩阵 题意 给定一个 \(n\times n\) 的 01 矩阵, 每次操作可以将一行转置后赋值给某一列, 问最少几次操作能让矩阵全为 1. 无解 ...

  10. [LOJ 6029]「雅礼集训 2017 Day1」市场

    [LOJ 6029] 「雅礼集训 2017 Day1」市场 题意 给定一个长度为 \(n\) 的数列(从 \(0\) 开始标号), 要求执行 \(q\) 次操作, 每次操作为如下四种操作之一: 1 l ...

随机推荐

  1. Keras 回归 拟合 收集

    案例1 from keras.models import Sequential from keras.layers import Dense, LSTM, Activation from keras. ...

  2. 类的成员和属性_python

    一.字段和方法分类 方法分类: 二.属性(将方法伪装成字段) 三种伪装方式:@property  @perr.setter @perr.deleter 属性使用的场景:分页 三.公有成员和私有成员 私 ...

  3. 云服务器 使用 onedrive 快速同步

    重大更新:支持微软的onedrive网盘,可以自动实时双向同步数据,也可以多台服务器和网盘之间实时同步数据.新增了一个虚拟环境python367,支持pytorch1.2:-----------微软O ...

  4. linux - mysql 异常:MySQL Daemon failed to start.

    报错内容 MySQL Daemon failed to start. 如果直接输入 mysql -root -p 登陆会出现 [mysql]ERROR 2002 (HY000): Can't conn ...

  5. Vue中v-show和v-if的使用以及区别

    个人博客 地址:http://www.wenhaofan.com/article/20190321143330 v-if 1.v-if 根据条件渲染,它会确保在切换过程中条件块内的组件销毁和重建    ...

  6. 162.扩展User模型-使用Proxy模型

    扩展用户模型: Django内置的User模型虽然已经足够强大了,但是有时候还是不能满足我们的需求,比如在验证用户登录的时候,它用的是用户名作为验证,而我们有时候需要通过手机号码或者是邮箱进行验证,还 ...

  7. OSI协议

    物理层: 网线连接在客户端计算机上,其实是连接在了计算机的一个叫做网卡的设备上,网卡是专门负责与外界通信的.网线一般是双绞线或者光缆,也可以使用无线电波,中间经过交换机,路由器,防火墙等等一堆设备统称 ...

  8. excel用xlrd日期变成42631.0

    datetime的解决办法混合数据的表中有个日期:2016/9/18 通过table.row_values(row_number)[1]读取时,显示的结果为:42631.0 查看row_values方 ...

  9. [LOJ113] 最大异或和 - 线性基

    虽然是SB模板但还真是第一次手工(然而居然又被运算符优先级调戏了) #include <bits/stdc++.h> using namespace std; #define int lo ...

  10. DTU DeepLearning: exercise 7

    torch activation functions: sigmoid, relu, tanh, softplus. https://morvanzhou.github.io/tutorials/ma ...