|
Задачка про остров
|
|||
---|---|---|---|
#18+
Первым проходом красим все что смогли, дальше проходим по оставшимся начиная с низших номеров, каждый проход уменьшая количество оставшихся до тех пор пока не останется ни одной ячейки не имеющей статуса "Океан" или "Лужа". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 18:46 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev второй ряд 1, 5, , 5 - "Океан", 1 - нет выхода в океан "Лужа" (все окружающие выше или "Лужа") но в целом да, к волновому алгоритму (от краёв) дело идет, судя по всему. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 18:50 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Имя пользователя1 скорее, предполагаемая лужа. Все площадки вокруг выше, это Лужа определяемая однозначно, также лужа определяется однозначно, если все вокруг выше, либо уже определены однозначно как Лужа. Вопрос только в количестве проходов по оставшимся не определенным на момент итерации площадкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 18:55 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Или же умудриться нарезать на круги. Я что имею ввиду с самого верха идем. Отрезали слой, смотрим на него, есть ли там замкнутая фигура (т.е. все точки фигуры выше или такой же высоты и внутри есть область (не важно какая , главное чтобы не пусто было). Все что в замкнутой фигуре, исключаем из последующей итерации. Итого получим группу "Окружностей", которые будут содержать лужи. А там уже для каждой считать объем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 18:57 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev Первым проходом красим все что смогли закрашенная клетка - это не океан, но и не лужа, это клетка, с которой вода утечет. Закрасили клетку, закрашиваем все соседние с ней, которые выше неё или равны ей (как в волновом алгоритме). Тогда всё незакрашенное будет лужами, но среди луж могут возвышаться островки, внутри которых снова могут быть лужи (но это уже другая история). Определим сначала лужи первого порядка, уровень воды в них, а далее доберемся до островов, и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 18:58 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Но в реализации это ни разу не просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 18:58 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Имя пользователя1 но в целом да, к волновому алгоритму (от краёв) дело идет, судя по всему. неа, после первой "покраски", гоняем циклы по оставшимся неопределенным, начиная с минимальных по высоте, часть площадок на каждой итерации будет переходить из неопределенной в определенное состояние, поэтому каждая следующая итерация будет иметь меньшее количество неопределенных, так до тех пор пока неопределенных не останется. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 18:58 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
АСУ ТПшник Но в реализации это ни разу не просто. эээ, проще некуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:00 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Ну если это просто со всякими граничными условиями, то мой алгоритм наиболее оптимальный как мне кажется. Хотя посмотрел бы я на короткую реализацию этого действия. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:01 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Или вы про свой вариант? Мой прочитайте, может понравится. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:02 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
АСУ ТПшник, Я про свой квадратно-гнездовой алгоритм, на счет как реализовать твой не знаю)) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:02 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
АСУ ТПшник Или вы про свой вариант? Мой прочитайте, может понравится. под внешним слоем может оказаться не одна сплошная лужа, а разделенная на несколько секторов, причем эти разделители уходят вглубь, и хрен знает, что там дальше делается... постепенно срезать слои не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:14 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton Это копи-паста с одной из олимпиадных задач. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:17 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
АСУ ТПшник Или вы про свой вариант? Мой прочитайте, может понравится. На большом поле количество комбинаций кругов будет сравнимо с количеством отдельных площадок, пройти по спирали с внешнего периметра к центру, а потом добивать оставшиеся неопределенные на мой взгляд более оптимально, чем нарезать срезы с кучей кругов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:17 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Не не. Смотри - первый попавшийся не пустой овал - уже лужа. Просто по определению - внутри него есть клетки ниже и они никак не соединены с морем , потому как отсечены овалом. Для наглядности - найдите здесь какой-то граничный случай (тут горы, а у вас будет наоборот - лужи) http://www.vertikal-pechatniki.ru/bibl/images/clip_image004.jpg Было у тебя поле из 100 хексов, не пустой овал отрезал 10 (его границы). На следующем слое тебе уже придется анализировать 90 хексов. И так далее. Идем сверху а не снизу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:18 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
На картинке - первый замкнутый овал от края, который попадется - одна большая лужа. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:20 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Если принять жирную черту (реку или что она там значит, за море) то на картинке всего 2 овала. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:21 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
АСУ ТПшник Не не. Смотри - первый попавшийся не пустой овал - уже лужа. Просто по определению - внутри него есть клетки ниже и они никак не соединены с морем , потому как отсечены овалом. Для наглядности - найдите здесь какой-то граничный случай (тут горы, а у вас будет наоборот - лужи) http://www.vertikal-pechatniki.ru/bibl/images/clip_image004.jpg Было у тебя поле из 100 хексов, не пустой овал отрезал 10 (его границы). На следующем слое тебе уже придется анализировать 90 хексов. И так далее. Идем сверху а не снизу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:21 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Сложность алгоритма как раз распонать карту овалов, а нарезать - нет ничего проще. Овал образовался, выкидываем все что внутри овала из следующей итерации, это уже лужа. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:22 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
авторто есть копать изнутри и находить замкнутые контуры, внутри которых углубления? Но эти контуры нельзя выкидывать, они могут оказаться глубокими впадинами более обширной лужи. Этот контур лужа. Все в нем лужа. Есть конечно вариант что в данном овале 2 лужи. 5343437. Но это вычисляется уже когда объем лужи считать будешь. Я почему ратую за этот алгоритм. Он более нагляден, а оценить предоженный ОраклДевом мысленно не так просто на наличие граничных условий. Кстати способом рекурсии лужа в луже - вычисляется роно тем же алгоритмом как и для начального определения. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:29 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Вообще задача детская. Объем моря начальный V1. Объем дождя V2. В лужах осталось = Vморя результирующее - V1 - V2. Всем спасибо все свободны :D ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:33 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
соберу сюда свой вариант, основанный на идеях iOracleDev этапы: 1) закрашиваем все ячейки, с которых вода сливается в море. Сначала все крайние, потом по принципу заражения - если у закрашенной клетки соседняя не ниже, то закрашиваем эту соседнюю. Похоже на волновой алгоритм, только "наизнанку". 2) Остались незакрашенные области - кандидаты в лужи. Обходим по краю, выясняем, где самая низкая стенка (высота Н). Оттуда начинаем закрашивать лужу, по соседним ячейкам, но только такие, которые ниже чем Н. Закрасили лужу, заодно посчитали объем, занесли в копилку. Всё, это отработанные клетки, если их засыпать песком до высоты Н, то они будут как клетки из п.1. Если клетки данной лужи касаются незакрашенных на п.2, то те незакрашенные - остров или полуостров, работаем с ними по п.1. Иначе обрабатывает другую лужу, которая осталась. таким образом мы последовательно добираемся до всех клеток. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:42 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Имя пользователя1 1) закрашиваем все ячейки, с которых вода сливается в море. Сначала все крайние, потом по принципу заражения - если у закрашенной клетки соседняя не ниже, то закрашиваем эту соседнюю. Похоже на волновой алгоритм, только "наизнанку". Обход по какому правилу? По правилу поиска выхода из лабиринта? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:52 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
На словах , на первый взгляд должно работать. А вот с реализацией мне кажется наплачетесь. Ветвистые деревья придется отрабатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 19:58 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev Имя пользователя1 1) закрашиваем все ячейки, с которых вода сливается в море. Сначала все крайние, потом по принципу заражения - если у закрашенной клетки соседняя не ниже, то закрашиваем эту соседнюю. Похоже на волновой алгоритм, только "наизнанку". Обход по какому правилу? По правилу поиска выхода из лабиринта? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2020, 20:02 |
|
|
start [/forum/topic.php?fid=16&msg=39924890&tid=1339799]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
145ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 267ms |
0 / 0 |