这题不错,可以更加深入的了解线段树扫面线算法,大家之前可能做过扫描线求矩形面积,但因为求面积的某些局限性,一些细节不用写到就可以a,但求周长不行。
首先,介绍下求周长的思路,从左往右在每一次插入一条边后,周长并的累加值==新增的横边+新增的竖边。我们可以发现,插入一条边之后,新增的横边的树木等于区间内连续线段的数目*新增横边的长度,新增的竖边等于插入前后覆盖长度的差值。插入一条出边之后,其实等同于删除该矩形对应的入边。出现了不连续的线段了。横边也相应增加了。这个思路比较好想到。
接着是实现的问题,前后覆盖的长度的插值比较好求,扫描线模板就行,求每次插入后有几段连续的线段,这个不就是so low的区间合并吗。
最后讲一下注意的细节,在求面积的过程中,大家可能都没有去掉重复的值,但在这里不去掉是不行的。我们要求连续的区间个数必须