码迷,mamicode.com
首页 > 其他好文 > 详细

扫描线

时间:2018-07-01 21:20:39      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:block   abs   msu   div   col   维护   row   variant   width   

参考于:http://www.cnblogs.com/kane0526/archive/2013/02/26/2934214.html

    https://www.cnblogs.com/headchen/p/9172491.html

     

    技术分享图片

  

   技术分享图片

 

  1. 先离散化。
  2. 【扫描线】是一根假设的虚线,从下往上扫描(或 从左往右)。
  3. 遇到一个矩形的下边(或左边),则 Update 相应区间的  w+1。
  4. 遇到一个矩形的上边(或右边),则Update 相应区间的   w-1。
  5. 用【线段树】维护【区间】的 w ,以及 w > 0 区间的线段的总长度Len。

求面积比较简单:

S=Δx?cnt>0(raw(i+1)?raw(i))
 
 
即可。也就是每次Update后,增加面积即可。
 

求周长

道理基本上差不多,稍复杂。

  1. 两次扫描,横向和竖向。

每次Update后,

  【周长的增加额】 = abs(【Update前SumLen】-【SumLen】)

  ΔLi=cnt>0(raw(i+1)?raw(i))
 
 

 

扫描线

标签:block   abs   msu   div   col   维护   row   variant   width   

原文地址:https://www.cnblogs.com/WTSRUVF/p/9251252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!