1

Тема: timus 1655

Здравствуйте!

http://acm.timus.ru/problem.aspx?space=1&num=1655

Собственно вопрос как решать? smile Дело в том что не первый раз встречаю данную задачу (похожие очень есть)  и вот как ее решать эффективно не знаю....

2

Re: timus 1655

Я эту задачу не решил, но по-моему это можно сделать так:

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

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