做法一

首先将边界也视作四条裁剪线,整个平面作为一张纸,视存在 \(y = -\infty, y = +\infty, x = -\infty, x = +\infty\) 四条直线。

按照纵坐标依次扫描每条线,每次维护当前纵坐标水平无穷长的直线和每个位置下面第一条之前插入过的纵坐标之间围成区域的连通性,如下图所示:

图中箭头指向的就是当前扫描(维护)到的(水平)线,红绿蓝分别为所围成的区域(有效)。

具体地,由于上述扫描过程中连通性只会在:水平线段,竖直线段底部,竖直线段顶部发生改变,因此我们将这些位置按照纵坐标排序依次考虑。

同时,为了方便我们直接让每条竖直线段管辖其右边第一个区域和其他区域的连通性。

  • 竖直线段底部

将原本一整段区域分成了两段,考虑对新加入的竖直线段新建一个区域,其余左边最近的区域联通,那么在并查集上连边。

  • 竖直线段顶部

无论如何,只需要将左右两个区域在并查集上联通即可。

  • 水平线段

加入水平线段后,中间被完全覆盖的区域与外界且两两之间不连通,需要赋予全新的并查集编号,这里显然不能暴力,考虑用数据结构维护。

首先对于竖直线段我们要支持插入,删除,查询前驱,平衡树显然可以直接胜任。

水平线段需要整个区域打上重新标号的懒标记,下次再进行横向覆盖的时候,整个区间存在懒标记的节点接下来一定都不会与外界联通需要直接加入答案,因此平衡树上还需要维护区间内懒标记没有被释放的点的数量。

最后我们再统计所有区域在并查集节点中构成的连通块数量加入答案即可。

因为有查询前驱操作,所以可以事先插入 \(x = -\infty\) 这条直线,最后答案需要减一。

注意在下传懒标记的时候只需要新建点而不需要在并查集上连边,时空复杂度均为 \(\mathcal{O}(n \log n)\).

做法二

注意到本题是网格图的一部分,那么一定是一张平面图,考虑利用欧拉公式求平面图面的数量。

注意本题可能不连通,设交点数量为 \(V\),线段 数(不是交点之间的边数!)为 \(E\),面数为 \(F\),线段 联通块(不是交点连通块个数)个数为 \(C\).

之所以和欧拉定理设的不同是因为统计线段连通块数比交点连通块数好做,原本交点间边数和交点连通块个数差可以抵掉一部分变为 \(E, C\) 之间的关系,即:

\[V - E - F + C = -1
\]

那么只需要求出 \(V, E, C\) 即可,\(E\) 显然是好求的,\(V\) 是经典扫描线问题,考虑如何求 \(C\).

依然考虑扫描线,沿水平从下往上扫描,每次相当于支持加删竖直线段,将水平线段和一个区间内的竖直线段连边。

考虑线段树优化区间连边,我们把每个竖直线段插入到线段树上对应的 \(\log\) 个区间,每次水平线段找到区间在线段树上 \(\log\) 个子区间。

注意到整个区间内的点如果全部和一个点联通那么这些点都是联通的,我们只需要保留一个代表节点即可。

很显然,代表节点就是顶端纵坐标最大的点,这样可以保证正确性。

复杂度与做法一的复杂度相同但思维难度降低了。

「JOI 2014 Final」裁剪线的更多相关文章

  1. 【题解】LOJ2759. 「JOI 2014 Final」飞天鼠(最短路)

    [题解]LOJ2759. 「JOI 2014 Final」飞天鼠(最短路) 考虑最终答案的构成,一定是由很多飞行+一些上升+一些下降构成. 由于在任何一个点上升或者下降代价是一样的,所以: 对于上升操 ...

  2. 「JOI 2014 Final」飞天鼠

    「JOI 2014 Final」飞天鼠 显然向上爬是没有必要的,除非会下降到地面以下,才提高到刚好为0. 到达一个点有两种情况:到达高度为0和不为0. 对于高度不为0的情况,显然花费的时间越少高度越高 ...

  3. 【2018.10.1】「JOI 2014 Final」年轮蛋糕

    题面 一看到求“最小值的最大值”这种问题,就能想到二分了. 二分答案,然后我们要把一圈分成三块,使这三块的大小都$\geq mid$.做法是把环展开成2倍长度的链,先钦定一个起点,然后根据前缀和再二分 ...

  4. loj 2759「JOI 2014 Final」飞天鼠

    loj 这题有在一棵树上上升或者下降的操作,稍加分析后可以发现上升操作如果不是一定要做(指高度不足以到下一棵树或者是最后到达\(n\))就不做,下降操作也是如果不是一定要做(指到达下一棵树时高度过高) ...

  5. 「JOI 2017 Final」JOIOI 王国

    「JOI 2017 Final」JOIOI 王国 题目描述 题目译自 JOI 2017 Final T3「 JOIOI 王国 / The Kingdom of JOIOI」 JOIOI 王国是一个 H ...

  6. LOJ#2351. 「JOI 2018 Final」毒蛇越狱

    LOJ#2351. 「JOI 2018 Final」毒蛇越狱 https://loj.ac/problem/2351 分析: 首先有\(2^{|?|}\)的暴力非常好做. 观察到\(min(|1|,| ...

  7. 【LOJ】#3014. 「JOI 2019 Final」独特的城市(长链剖分)

    LOJ#3014. 「JOI 2019 Final」独特的城市(长链剖分) 显然我们画一条直径,容易发现被统计的只可能是直径某个距离较远的端点到这个点的路径上的值 用一个栈统计可以被统计的点,然后我们 ...

  8. 「JOI 2015 Final」城墙

    「JOI 2015 Final」城墙 复杂度默认\(m=n\) 暴力 对于点\((i,j)\),记录\(ld[i][j]=min(向下延伸的长度,向右延伸的长度)\),\(rd[i][j]=min(向 ...

  9. 「JOI 2015 Final」舞会

    「JOI 2015 Final」舞会 略微思考一下即可知该过程可以化为一棵树.(3个贵族中选择1个,即新建一个节点连向这3个贵族). 该树的结点个数为\(2n\). 考虑二分答案mid. 判定的是公主 ...

随机推荐

  1. struts2升级至2.3.24方法

    1.替换如下jar包 2.修改web.xml中的struts过滤器配置 将原来的过滤配置注释掉 替换为: 3.struts.xml配置 4. 发现程序中有类报错:缺少  import org.apac ...

  2. 【jvm】02-手写自己的类加载器

    [jvm]02-手写自己的类加载器 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点个赞.加个 ...

  3. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

  4. wordpress搭建网站更改域名后打开网页排版显示错乱解决办法

    发生的原因: 我本来已经搭建好了网站,也测试了没问题.后来更改了网站的域名,出现了这种情况. 解决办法: 需要修改数据库的options表里面的 siteurl 和 home 这两个表的内容为最新的域 ...

  5. dnspython模块报错 AttributeError: 'CNAME' object has no attribute 'address'

    有时候用到这个模块的时候会报错 AttributeError: 'CNAME' object has no attribute 'address' 如下所示 [root@ansible ch01]# ...

  6. koa路由接口

    const router = require('koa-router')() //返回一个页面 router.get('/', async (ctx, next) => { global.con ...

  7. 什么是css Modules

    具体请参考阮一峰老师的博客(http://www.ruanyifeng.com/blog/2016/06/css_modules.html)

  8. MySQL使用时间作为判断条件

    背景:在开发过程中,我们经常需要根据时间作为判断条件来查询数据,例如:当月,当日,当前小时,几天内...... 1. 当月 我们只需要使用一个mysql的MONTH(date)函数即可实现.(注意判断 ...

  9. 【从小白到专家】 Istio专题之七:30分钟讲透Istio访问与控制

    本文为Istio系列专题之七--Istio访问与控制.Istio通过身份认证.授权.多重安全策略,来保证微服务的安全,实现代码无侵入性.有时我们需要对微服务间的相互访问进行控制,比如满足某些条件的微服 ...

  10. Vulnhub系列:Tomato(文件包含getshell)

    这个靶机挺有意思,它是通过文件包含漏洞进行的getshell,主要姿势是将含有一句话木马的内容记录到ssh的登录日志中,然后利用文件包含漏洞进行包含,从而拿到shell 0x01 靶机信息 靶机:To ...