Globe
Просветленный
(24839)
9 лет назад
Зависит от того, пересекаются ли эти прямоугольники или нет. Если же ко всему прочему эти прямоугольники произвольно "ориентированы" на плоскости, то задача усложняется еще больше.
В целом алгоритм простой:
1) Находим сумму площадей прямоугольников (S0)
2) Находим сумму площадей попарных пересечений прямоугольников (S1)
3) Находим сумму площадей попарных пересечений фигур из п. 2 (S2) и т. д.
Ответом будет сумма: S0 - S1 + S2 - S3 + .
Либо можно поступить просто. Если прямоугольники расположены достаточно "компактно", то можно найти вмещающий их прямоугольник, в нем случайным образом накидать N точек, из этого множества выделить n точек, попавших внутрь какого-нибудь из интересующих нас прямоугольников, и полученное отношение n/N даст оценку площади (метод Монте-Карло).
Либо можно избавиться от вероятностного характера оценки из предыдущего пункта, введя на вмещающем прямоугольнике дискретную двумерную сетку с шагом h, и подсчитав количество узлов сетки, попавших внутрь рассматриваемых прямоугольников. Но вычислительная сложность этого алгоритма будет O((1/h)^2).