http://acm.hdu.edu.cn/showproblem.php?pid=1828
扫描线第二题,1A
思路:按照x轴和y轴各扫一次,也就是分两次计算,一次计算与x轴平行的周长 ,另一次与y轴,他们的和就是总周长.
每条边分左右两种边插进去线段树,线段树的cnt维护这个线段[l,r]已经被覆盖了多少次
1.如果左边线段覆盖 那么这一段上面全部+1;
2.如果右边 -1;
这样我们就知道在任意的区间有没有被覆盖过,被覆盖过了多少次;
1.当左边的边覆盖cnt为0的区域的时候,周长加上这段的没有被覆盖的长度
2.当右边的边减去覆盖,这时线段的cnt为1,减去后就变成0了,也就是出去的那条......
阅读全文