avva: (Default)
[personal profile] avva
(будет интересно только программистам)

На работе рассказали интересную задачу. Пусть дан прямоугольный лист металла известных размеров. Из-за дефектов производства на листе есть точки, в которых металл слишком слаб - дан список таких точек, с координатами каждой. Задача: найти наибольший по площади прямоугольник внутри листа, не содержащий ни одной дефективной точки внутри себя (на границе - можно).

Искать следует только среди прямоугольников со сторонами, параллельными исходному (более общий вопрос, в котором искомый прямоугольник может быть повернут относительно всего листа, можно считать отдельной задачей - ее я вообще не знаю, как решать).

Re: Жызнено

Date: 2008-04-23 10:36 am (UTC)
From: [identity profile] failhigh.wordpress.com (from livejournal.com)
Да, точно. Прогнал. Упустил из виду, что они не дизьюнктные.

Давайте рекурсивно.
Пусть R(i) кол-во незаконченых прямоугольнников после i точек.
Тогда:
R(i+1) = R(i)
+ 1 //Новый с левым краем.
+ 2*In(i+1) - In(i+1) //Те, кого пересекли i+1 точкой.

А какой порядок у In(i)? Интуитивно вижу "лесенку" из вложеных прямоугольников. In(i) = O(i) вероятно?

Тогда, да. На каждом шагу. O(n * log n).

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 11:23 am
Powered by Dreamwidth Studios