(HDU 1542) Atlantis 矩形面积并——扫描线

n个矩形,可以重叠,求面积并。

n<=100:

  暴力模拟扫描线。模拟赛大水题。(n^2)

  甚至网上一种“分块”:分成n^2块,每一块看是否属于一个矩形。

  甚至这个题就可以这么做。

n<=100000

  这就要到扫描线了。

之前一直不会。

不好处理的地方在于:不知道区间被覆盖怎么计算。。。。

像sum区间和一样计算??sum>区间长度也不一定完全包含。。。

不管覆盖多少次,就只算一次??之后的减法怎么算??

 

总之,

这篇题解打消了我的疑惑:ACM POJ1151 (HDU 1542) Atlantis(矩形面积并,线段树+离散化+扫描线)

其实很简单。

线段树每个区间有一个c值,表示这个区间被完全覆盖次数。

类似李超线段树,我们把每个加入的线段分成logn份,恰好放进每个区间才行。

这个区间的c值,就加1,表示被完全覆盖一次。

计算这个区间的实际覆盖贡献cnt时,如果c>0 显然就是区间长度了。

如果不是,那就是两个儿子区间的贡献cnt和。

 

总结:

线段树区间被线段覆盖问题,确实因为不完全覆盖统计很麻烦,又不可做。

所以,干脆就把线段拆解,记录每个区间被完全覆盖次数。这个完全覆盖次数,就不用pushup了。

需要的时候,每次查询大不了logn^2一下就好了。

转载于:https://www.cnblogs.com/Miracevin/p/9373138.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值