扫描线

参考于: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=Δxcnt>0(raw(i+1)raw(i))
 
 
即可。也就是每次Update后,增加面积即可。
 

求周长

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

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

每次Update后,

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

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

猜你喜欢

转载自www.cnblogs.com/WTSRUVF/p/9251252.html