本文主要是介绍[URAL 1147][USACO rect1]Shaping Regions(矩形切割),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题目大意】:
A*B的矩阵,按上下顺序给出N个小矩形,每个小矩形都有一种颜色,求最后所有颜色的覆盖面积。
【题目分析】:
很经典的线段树的题目,我以前用的就是线段树的方法,但是还有更好的做法,那就是传说中的矩形切割。
其实矩形切割并不是很难理解,实际上他还有一个名字叫做冰块上浮法,怎么理解呢。
这道题无非好像是在墙上糊纸,在最上面的肯定不会受到其他的遮挡,所以说应该全能看到。然后下面的东西我们就可以进行一下讨论。我们把插入矩形的顺序倒过来。然后重新进行插入,这样已经插入过的地方就可以被无视了(因为肯定显现出来的是上面的)。我们只需要将它上面没被遮住的地方一层层的让上边的纸档上,最终得到的就是露在外面的部分。
P.S.就好像一个冰块最开始在最底层,然后开始上浮。碰到上面的冰块,被碰到的地方就化掉,然后剩下的部分继续上浮,直到浮到水面为止。所以这种方法也叫冰块上浮法。
详细的讲解和图可以看薛茅神牛的论文。
【代码】:
这篇关于[URAL 1147][USACO rect1]Shaping Regions(矩形切割)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!