描述
如下图所示,在X轴上方一共有N个三角形。这些三角形的底边与X轴重合,底边上两个顶点的坐标分别是(Li, 0)和(Ri, 0),底边的对顶点坐标是(Xi, Yi)。其中Li ≤ Xi ≤ Ri 且 Li < Ri。
你能求出这些三角形覆盖的面积之和吗? (重叠部分只算一次)
输入
第一行包含一个整数N。(1 ≤= N ≤ 100)
以下N行每行包含4个整数Li, Ri, Xi, Yi。(1 ≤ Li < Ri ≤ 100000 且 Xi ∈ [Li, Ri], 1 <= Yi ≤ 100000)
输出
覆盖的面积,保留2位小数。
样例输入
2 1 4 3 3 3 6 4 3
样例输出
8.25
想法:
在c程课上问同桌这道题(一个不搞ACM的同学,我也是试一试的态度,因为我晓得我的几何是最差的TT)。然而,他提供了很多方案(在不考虑是否方便用计算机程序实现的情况下),给跪了。其中我觉得好实现的是如下方案:
- 首先,找出轮廓(下面的曲线),算出大多边形面积。
- 找出轮廓里的黑色三级形(没有覆盖的地方),算出黑色三角形的面积。
- 做差。
- 具体的大多边形的面积又可以分解为小三角形来计算(我只会这个)。
- 三角形之间的关系无非是不相交,相交,和包含。上面的思路都可以搞定。
我觉得这方法ok,具体的实现还得吃饱了再思考。