1

Тема: Треугольник наименьшей площади

http://e-maxx.ru/algo/minimal_triangle
По всей видимости, здесь написано палево smile Я этот алгоритм подслушал на одном разборе, и в тот раз этот алго прошёл, но это конечно не док-во корректности алгоритма. И сегодня, на очередном Открытом кубке, этот код не прошёл, и по всей видимости, является идейно неправильным.

Прошу высказать здесь свои соображения, и возможные идеи решения этой задачи.

2

Re: Треугольник наименьшей площади

А какой вердикт у тебя был? Просто сейчас когда я убрал одинаковые точки получил RE#38

3

Re: Треугольник наименьшей площади

Ну а RE видимо из-за сортировки

4

Re: Треугольник наименьшей площади

WA 58

не знаю, откуда RE, вроде компаратор корректный.

5

Re: Треугольник наименьшей площади

Возможная идея решения:
1. Зафиксируем какой-то отрезок, тогда каждая параллельная прямая будут давать геометрическое место вершин, которые будут образовывать с отрезком треугольники одной и тойже площади (S = 0.5 * a * h_a). Видно что из таких параллельных прямых нас интересует ближайшая к нашему отрезку и любая точка на этой прямой.
2. Проведем через все точки вертикальные прямые и найдем их порядок, далее будем вращать прямые вокруг точек, их порядок поменяется в случае, когда две какие-то прямые совпадут (на этой прямой будет расположен какой-то отрезок) - эти две прямые просто поменяются местами после совпадения при вращении дальше.
3. Сделаем события -- отрезок, и упорядочим их по углу накланной прямой проведенной через этот отрезок и будем просматривать их в этом порядке. Будем обходить события, поддерживая текущий порядок прямых.
При событии - меняем две соответствующие прямые, а также смотрим первые несовпадающие по одну сторону от прямой и по другую сторону от прямой ((в текущем порядке), для каждого отрезка вершина с минимальной площадью будет лежать на одной из этих прямых - выберем из них минимум для этого отрезка, а затем и минимум по площадям для каждого из отрезков и получим ответ.

6 Отредактировано cmd (2010-03-22 10:17:25)

Re: Треугольник наименьшей площади

http://e.imagehost.org/view/0381/algo вот иллюстрация небольшая.
*Смотреть сначала в первой колонке сверху вниз, а потом во второй сверху вниз.

7

Re: Треугольник наименьшей площади

на самом деле при случае когда точки на 1 прямой он не срабатывает. Если я добавляю в компаратор проверку на четверти и проверку на длины при равном векторном произведении, то проходит до 49 теста. Ну и шаманством до ТЛ на 51ом

8

Re: Треугольник наименьшей площади

У меня тоже WA58

test

9

Re: Треугольник наименьшей площади

AlexFetisov
Ты про решение из algo? Мы в нём сразу написали, что удалять все точки на одной прямой, кроме ближайшей к нам. Без этого, возможно, и правда не дойдёт до 58 теста.

10

Re: Треугольник наименьшей площади

А что за задача? Ее можно дорешать?