【USACO题库】3.1.4 Shaping Regions形成的区域

题目描述


N个不同的颜色的不透明的长方形(1 <= N <= 1000)被放置在一张宽为A长为B的白纸上。
这些长方形被放置时,保证了它们的边于白纸的边缘平行。
所有的长方形都放置在白纸内,所以我们会看到不同形状的各种颜色。
坐标系统的原点(0,0)设在这张白纸的左下角,而坐标轴则平行于边缘。

INPUT FORMAT
每行输入的是放置长方形的方法。
第一行输入的是那个放在底的长方形(即白纸)。
第 1 行:A , B 和 N, 由空格分开 (1 <=A, B<=10,000)
第 2 到N+1行:为五个整数 llx, lly, urx, ury, color 这是一个长方形的左下角坐标,右上角坐标和颜色。
颜色 1和底部白纸的颜色相同。

SAMPLE INPUT (file rect1.in) 
20 20 3
2 2 18 18 2
0 8 19 19 3

8 0 10 19 4


OUTPUT FORMAT

输出文件应该包含一个所有能被看到颜色连同该颜色的总面积的清单( 即使颜色的区域不是连续的),按color的增序顺序。不要显示没有区域的颜色。


SAMPLE OUTPUT (file rect1.out)

1 91

2 84

3 187

4 38


这道题目就是矩形切割法:假设当前上面的布已经全部布好了,现在要布的是最最下面的那张白纸,你可以把这张白纸想象成一个可以分解的果冻,每遇到一张布可以往他的上下左右四个方向去分解,而分解的坐标与你当前碰到的这张布的坐标相关。例如如果你当前要分解到这张布的左边,则你分解完之后x1坐标要赋值为(这张布的左边),方便下次计算。(因为左边你已经计算过了,当然无需再计算,也就是把它覆盖,x1坐标更新罢了),其他方向亦然。分解(走完)n个之后就可以计算面积了,这里不一定每个布都要分解,只要当前大布不包含其即可。

代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值