2056

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2056

2056_第1张图片
图片发自App

翻译:

给定两个矩形和每个矩形对角线上两点的坐标,必须计算两个矩形相交部分的面积。它的侧面与Ox和Oy平行。

输入第一行输入的是8个正数,表示必须在每个对角线上的四个点的坐标。8个数字是x1、y1、x2、y2、x3、y3、x4、y4。这意味着第一个矩形上的两个点是(x1、y1)、(x2、y2);第二个矩形上的其他两个点是(x3、y3)、(x4、y4)。

每种情况下的输出在一行中输出其相交部分的面积。精确到小数点后2位。

(因为英语水平不足,所以写笔记的时候还是动用了翻译……)


思路:给出矩形对角线的坐标,其实就可以确定矩形四个点的坐标了。从横向入手,当左边的矩形最右的边的x坐标大于右边矩形最左边的x坐标时,有可能相交。同理,从纵向入手,当下面的矩形顶边的y坐标大于上面矩形底边的y坐标时,有可能相交。二者同时满足时,则必定相交。最后,再考虑一个大矩形内含一个小矩形的情况。


做法:(并不推荐)比较x坐标,确定哪个矩形在左哪个在右,比较y左边,确定哪个矩形在上哪个在下。若存在相交的情况,那么相交的面积即为组成的一个新的小矩形的面积。而小矩形的长和宽即用点坐标判断并相减求出来。特例:当一个大矩形内含一个小矩形时,相交面积为小矩形的面积。

2056_第2张图片
图片发自App



2056_第3张图片
图片发自App

2056_第4张图片
图片发自App

2056_第5张图片
图片发自App

总结:这道题我的做法极度繁琐,且思路不清晰,在做题过程中也曾忽略一些特殊情况。故只能吸取经验:做题前先把思路确定清楚,考虑周全再开始动手。

你可能感兴趣的:(2056)