其实这道题目在去年就已经A过一次了,其实在去年我会扫描线的……不过今年又忘了是啥了- - 于是百度了半天,看到很多莫名其妙的解释,搞得我更加头晕,睡了一觉之后找到一篇比较好的文章,http://hi.baidu.com/pojoflcc/blog/item/a762de17bcc9f04021a4e9f5.html,讲的言简意赅,一下子就想起来是咋回事了。

以我的理解再说一次吧……免得下次又忘了……

程序的整体思想是,横向跟纵向分开考虑。以纵向的边为例,以从左到右的顺序,加到线段树里面(或者从线段树删掉,遇到左边的时候加入,右边的时候删除),每进行一次这种操作,都统计一下长度,然后如果长度有变化的话,就把变化的量加到答案里面去,于是就OK了……具体实现的时候对于同一个X坐标的边,要先把所有需要添加的边先添加,再把需要删除的边删除掉,这样子对于重边的处理就不会有问题了- -

顺便说下面积的求法,思路基本上是一样的,不过累加的不是变化值,而是横坐标变化量和线段树乘出来之后的面积。嗷……貌似也就我自己看得懂了……