powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка про остров
25 сообщений из 421, страница 2 из 17
Задачка про остров
    #39924859
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первым проходом красим все что смогли, дальше проходим по оставшимся начиная с низших номеров,
каждый проход уменьшая количество оставшихся до тех пор пока не останется ни одной ячейки не имеющей
статуса "Океан" или "Лужа".
...
Рейтинг: 0 / 0
Задачка про остров
    #39924862
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
второй ряд 1, 5, , 5 - "Океан", 1 - нет выхода в океан "Лужа" (все окружающие выше или "Лужа")
скорее, предполагаемая лужа.

но в целом да, к волновому алгоритму (от краёв) дело идет, судя по всему.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924868
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
скорее, предполагаемая лужа.

Все площадки вокруг выше, это Лужа определяемая однозначно, также лужа определяется однозначно,
если все вокруг выше, либо уже определены однозначно как Лужа.

Вопрос только в количестве проходов по оставшимся не определенным на момент итерации площадкам.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924872
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или же умудриться нарезать на круги.
Я что имею ввиду с самого верха идем.
Отрезали слой, смотрим на него, есть ли там замкнутая фигура (т.е. все точки фигуры выше или такой же высоты и внутри есть область (не важно какая , главное чтобы не пусто было).
Все что в замкнутой фигуре, исключаем из последующей итерации.

Итого получим группу "Окружностей", которые будут содержать лужи.
А там уже для каждой считать объем.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924874
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Первым проходом красим все что смогли
точно.

закрашенная клетка - это не океан, но и не лужа, это клетка, с которой вода утечет. Закрасили клетку, закрашиваем все соседние с ней, которые выше неё или равны ей (как в волновом алгоритме). Тогда всё незакрашенное будет лужами, но среди луж могут возвышаться островки, внутри которых снова могут быть лужи (но это уже другая история). Определим сначала лужи первого порядка, уровень воды в них, а далее доберемся до островов, и т.д.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924875
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но в реализации это ни разу не просто.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924876
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
но в целом да, к волновому алгоритму (от краёв) дело идет, судя по всему.

неа, после первой "покраски", гоняем циклы по оставшимся неопределенным, начиная с минимальных по высоте,
часть площадок на каждой итерации будет переходить из неопределенной в определенное состояние,
поэтому каждая следующая итерация будет иметь меньшее количество неопределенных, так до тех пор
пока неопределенных не останется.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924878
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшник
Но в реализации это ни разу не просто.

эээ, проще некуда.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924880
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если это просто со всякими граничными условиями, то мой алгоритм наиболее оптимальный как мне кажется. Хотя посмотрел бы я на короткую реализацию этого действия.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924881
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вы про свой вариант? Мой прочитайте, может понравится.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924882
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшник,

Я про свой квадратно-гнездовой алгоритм, на счет как реализовать твой не знаю))
...
Рейтинг: 0 / 0
Задачка про остров
    #39924885
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшник
Или вы про свой вариант? Мой прочитайте, может понравится.
ты про 22077107 ?
под внешним слоем может оказаться не одна сплошная лужа, а разделенная на несколько секторов, причем эти разделители уходят вглубь, и хрен знает, что там дальше делается...

постепенно срезать слои не получится.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924888
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Это копи-паста с одной из олимпиадных задач.
я видел тривиальный одномерный вариант, ну и подумал про плоскость. Выбрал шестиугольники только потому, что нет сомнительного касания углами.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924889
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшник
Или вы про свой вариант? Мой прочитайте, может понравится.

На большом поле количество комбинаций кругов будет сравнимо с количеством отдельных площадок,
пройти по спирали с внешнего периметра к центру, а потом добивать оставшиеся неопределенные
на мой взгляд более оптимально, чем нарезать срезы с кучей кругов.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924890
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не не.
Смотри - первый попавшийся не пустой овал - уже лужа. Просто по определению - внутри него есть клетки ниже и они никак не соединены с морем , потому как отсечены овалом.
Для наглядности - найдите здесь какой-то граничный случай (тут горы, а у вас будет наоборот - лужи)
http://www.vertikal-pechatniki.ru/bibl/images/clip_image004.jpg
Было у тебя поле из 100 хексов, не пустой овал отрезал 10 (его границы).
На следующем слое тебе уже придется анализировать 90 хексов. И так далее. Идем сверху а не снизу.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924891
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На картинке - первый замкнутый овал от края, который попадется - одна большая лужа.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924894
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если принять жирную черту (реку или что она там значит, за море) то на картинке всего 2 овала.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924896
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшник
Не не.
Смотри - первый попавшийся не пустой овал - уже лужа. Просто по определению - внутри него есть клетки ниже и они никак не соединены с морем , потому как отсечены овалом.
Для наглядности - найдите здесь какой-то граничный случай (тут горы, а у вас будет наоборот - лужи)
http://www.vertikal-pechatniki.ru/bibl/images/clip_image004.jpg
Было у тебя поле из 100 хексов, не пустой овал отрезал 10 (его границы).
На следующем слое тебе уже придется анализировать 90 хексов. И так далее. Идем сверху а не снизу.
то есть копать изнутри и находить замкнутые контуры, внутри которых углубления? Но эти контуры нельзя выкидывать, они могут оказаться глубокими впадинами более обширной лужи.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924897
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложность алгоритма как раз распонать карту овалов, а нарезать - нет ничего проще.
Овал образовался, выкидываем все что внутри овала из следующей итерации, это уже лужа.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924899
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторто есть копать изнутри и находить замкнутые контуры, внутри которых углубления? Но эти контуры нельзя выкидывать, они могут оказаться глубокими впадинами более обширной лужи.
Этот контур лужа. Все в нем лужа. Есть конечно вариант что в данном овале 2 лужи. 5343437. Но это вычисляется уже когда объем лужи считать будешь.
Я почему ратую за этот алгоритм. Он более нагляден, а оценить предоженный ОраклДевом мысленно не так просто на наличие граничных условий.

Кстати способом рекурсии лужа в луже - вычисляется роно тем же алгоритмом как и для начального определения.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924903
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще задача детская.

Объем моря начальный V1.
Объем дождя V2.

В лужах осталось = Vморя результирующее - V1 - V2.

Всем спасибо все свободны :D
...
Рейтинг: 0 / 0
Задачка про остров
    #39924908
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
соберу сюда свой вариант, основанный на идеях iOracleDev

этапы:

1) закрашиваем все ячейки, с которых вода сливается в море. Сначала все крайние, потом по принципу заражения - если у закрашенной клетки соседняя не ниже, то закрашиваем эту соседнюю. Похоже на волновой алгоритм, только "наизнанку".

2) Остались незакрашенные области - кандидаты в лужи. Обходим по краю, выясняем, где самая низкая стенка (высота Н). Оттуда начинаем закрашивать лужу, по соседним ячейкам, но только такие, которые ниже чем Н. Закрасили лужу, заодно посчитали объем, занесли в копилку. Всё, это отработанные клетки, если их засыпать песком до высоты Н, то они будут как клетки из п.1.

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

таким образом мы последовательно добираемся до всех клеток.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924911
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
1) закрашиваем все ячейки, с которых вода сливается в море. Сначала все крайние, потом по принципу заражения - если у закрашенной клетки соседняя не ниже, то закрашиваем эту соседнюю. Похоже на волновой алгоритм, только "наизнанку".

Обход по какому правилу? По правилу поиска выхода из лабиринта?
...
Рейтинг: 0 / 0
Задачка про остров
    #39924915
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На словах , на первый взгляд должно работать. А вот с реализацией мне кажется наплачетесь. Ветвистые деревья придется отрабатывать.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924918
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Имя пользователя1
1) закрашиваем все ячейки, с которых вода сливается в море. Сначала все крайние, потом по принципу заражения - если у закрашенной клетки соседняя не ниже, то закрашиваем эту соседнюю. Похоже на волновой алгоритм, только "наизнанку".

Обход по какому правилу? По правилу поиска выхода из лабиринта?
обход, например, "поиском в ширину" - закрасили клетку, добавили в очередь тех соседей, которых тоже закрасим.
...
Рейтинг: 0 / 0
25 сообщений из 421, страница 2 из 17
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка про остров
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]