因为 \(n\) 个三角形有重叠部分,所以我们可以倒序处理每个三角形,并对其进行分类讨论:
-
若当前三角形编号为 \(n\),则直接将总面积加上 \(\dfrac{d \times h}{2}\)。
-
否则,再次分出两种情况:
- 若当前三角形的 \(y_i + h > y_{i+1}\)(即编号为 \(i,i+1\) 的三角形有重叠),则如下图所示:
红色部分为重叠部分,则有 \(nh=y_i+h-y_{i+1}\),根据 \(\dfrac{nh}{h}=\dfrac{nd}{d}\)(因为两个三角形互为相似三角形,所以底和高都是同比例放大的),可知 \(nd=d \times \dfrac{nh}{h}\)。
- 否则,直接将总面积加上 \(\dfrac{d \times h}{2}\)。
注意强制类型转换为 long double
,且输出时至少需要保留小数点后 \(6\) 位。