ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 102947
УсловиеГенератор случайных карт известной игры Heroes of Might and Magic III создает острова, на которых изначально будут расположены герои. При такой генерации острова получаются различными по величине. Назовем коэффициентом несправедливости отношение площади наибольшего острова к площади наименьшего. Требуется определить этот коэффициент.Карта задается прямоугольником N × M, в каждой клетке которого записана
цифра 0 (вода) или цифра 1 (земля). Островом считается максимальное связное
множество клеток, содержащих единички, т.е. такое множество клеток A, что:
РешениеСкачать архив тестов и решенийНа первый взгляд задача кажется совершенно стандартной, однако указанные в условии ограничения не позволяют решить ее привычным способом. Можно, конечно, попытаться разместить матрицу 1000 × 1000 в динамической памяти побитово и написать нерекурсивный вариант процедуры ее просмотра, чтобы не происходило переполнения стека. Этот способ приведет к успеху, однако мы рассмотрим более красивое решение данной задачи. Будем просматривать матрицу по строчкам сверху вниз. В каждый момент времени храним в памяти только текущую и предыдущую строчки матрицы. Также будем помнить максимальный и минимальный размеры островов, которые мы уже полностью просмотрели, текущие размеры островов, которые мы видим в данный момент, а для каждой единички в строках, которые мы просматриваем, – к какому острову она относится. Единичка (или группа единичек, стоящих подряд) в текущей строке может быть: 1. Началом нового острова, если сверху (т.е. на той же позиции в предыдущей
строке) от всех единичек стоят ноли. Например, 2. Продолжением какого-то острова, начавшегося в предыдущей строке или
раньше, если хотя бы над одной из единичек группы стоит единичка. Например, 3. Одна группа единичек может служить продолжением сразу нескольких
островов. Тогда эти острова объединяются (т.е. далее рассматриваются как один
остров), а их текущие площади складываются. Например, Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|