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

Во время прилива остров полностью уходит под воду. Найти суммарный объем воды, который останется в лужах на острове, после отлива. На рисунке оный объем равен 3, вода останется в центральной ячейке и ячейке сверху-справа от неё.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924622
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ограничения на сложность или что-то типа есть? Можно просто решение в лоб:

0) Обозначем "плиты море" = 0
1) Для каждой плиты находим все возможные пути к морю (с условием a[n] > a[n+1]). Для каждой плиты сохраняем массив плит, которые участвовали в путях к морю
2) Находим локальные минумы
3) Для каждого локального минимум рекурсивно обходим его соседей с проверкой, находятся ли они в "чьем-то пути" из первого пункта. Если нет, то добавляем его в лужу.
4) В итоге в лужах находятся группы плит. У каждой лужы находим минимального соседа
5) Объем = Сумма всех групп по (минимальный сосед - высота плиты)
...
Рейтинг: 0 / 0
Задачка про остров
    #39924625
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SpringMan
Ограничения на сложность или что-то типа есть?
я сам пока не решил, не знаю.
ну а так - чем меньше, тем лучше)
...
Рейтинг: 0 / 0
Задачка про остров
    #39924630
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переусложним в первом решении, можно чуть проще:

0) Обозначем "плиты море" = 0
1) Для каждой плиты находим все возможные пути к морю (с условием a[n] > a[n+1]). Для каждой плиты сохраняем флаг "есть или нет выход к морю"
2) Находим локальные минумы
3) Для каждого локального минимум рекурсивно обходим его соседей с проверкой есть ли у него выход к морю. Если выхода к морю тоже нет, то добавляем эту плиту в лужу
4) В итоге в лужах находятся группы плит. У каждой лужы находим минимального соседа
5) Объем = Сумма всех групп по (минимальный сосед - высота плиты)
...
Рейтинг: 0 / 0
Задачка про остров
    #39924645
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нудно описывать исходные данные.

Обычно сотовый порядок узлов хорошо намапливается на матрицу где мы (условно) считаем каждую
ячейку 6 связной. Типа

Код: sql
1.
2.
3.
4.
5.
    o o
    |/
  o-o-o
   /|
  o o
...
Рейтинг: 0 / 0
Задачка про остров
    #39924654
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если для настоящей картинки (нужна матрица по трем линиям?):

рассуждения идут из центра
если по шести направлениям высоты выше, то "хорошо".
если по одному из направлений высота меньше, переходим на это направление.
и снова перебираем пять (или три) направлений.

как-то так
...
Рейтинг: 0 / 0
Задачка про остров
    #39924698
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто прогаммировать структуры данных с графами - нудотство.
Обычно мы пытаемся применять сначала коллекции. Потом hashmaps, потом деревья.

Графы идут в самом конце по степени популярности использования.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924702
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Просто прогаммировать структуры данных с графами - нудотство.

+1
Предлагаю шестигранник сделать квадратным
...
Рейтинг: 0 / 0
Задачка про остров
    #39924717
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
mayton
Просто прогаммировать структуры данных с графами - нудотство.

+1
Предлагаю шестигранник сделать квадратным
можно и так, только уточнить, что касание углами плотное и воду не пропускает
...
Рейтинг: 0 / 0
Задачка про остров
    #39924732
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
можно и так, только уточнить, что касание углами плотное и воду не пропускает
Типа, в шестиграннике касание углов может быть и неплотным?
...
Рейтинг: 0 / 0
Задачка про остров
    #39924750
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Имя пользователя1
можно и так, только уточнить, что касание углами плотное и воду не пропускает
Типа, в шестиграннике касание углов может быть и неплотным?
в шестиугольнике касание сторонами, потому вопросов не возникает.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924755
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
в шестиугольнике касание сторонами
Внимательно посмотрите на собственную картинку.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924770
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
mayton
Просто прогаммировать структуры данных с графами - нудотство.

+1
Предлагаю шестигранник сделать квадратным

+1 В комьютерных играх типа Panzer General игровая поверхность так и задана. Более того
там хитрость есть как на квадрате больше ячеек впихнуть.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924774
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перебираем для каждого островка соседей. Если все 6 выше - тут лужа. Все. Всем спасибо все свободны.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924776
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя погорячился да.. Все не так..
...
Рейтинг: 0 / 0
Задачка про остров
    #39924783
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

касание любой пары шестиугольников никому не мешает.

а у квадратов, в реальном мире, не может так быть, чтобы А касался D, и в то же время B касался С (см. картинку). Потому отдельное пояснение про углы.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924785
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это копи-паста с одной из олимпиадных задач. Только там дождь капал на квадратные столбы и надо
было посчитать высоту луж после дождя. Границы столбов по краям уходили в минус бесконечность
тоесть по краям вода стекала вниз.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924790
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшник
Хотя погорячился да.. Все не так..

Это в любом случае рекурсия. Изюминка будет в условии выхода.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924795
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется надо пытаться представить все с точки зрения воды - где она упрется не в море , стекая. А когда эти самые области уже конечное число - вот тут применять сравнение высот и прочее и прочее.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924801
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Крайние hexxagons которые упираются в море - надо приравнять к некому минимальному числу типа MIN_INTEGER.
2. Далее должен быть некий цикл по всем оставшимся hexxagons, где мы просто делаем min(x,y) по уровню
воды между всеми соседями.
3. Завершаем алгорим когда уровни воды перестали понижаться.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924843
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или я не понял, или 51325 лужу с двумя минимумами вы пропустите.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924844
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же крайние клетки могут быть разной высоты. Не все так просто.
...
Рейтинг: 0 / 0
Задачка про остров
    #39924849
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то типа по капле упало на каждый хекс. И множится она деревом на все клетки, которые ниже текущей. Уплыла в море - вычеркиваем, нет - ищем минимумы.
Нашли все минимумы.
В каждом минимуме - поднимаем уровень на один. - соответсвенно на все граничные хексы пуляем очередную каплю. И так далее и тому подобное.
Куча граничных условий, а если еще и на язык переклывать, не кислая такая программа выйдет.

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

Можно пойти от противного, закрашивая ячейки сливающиеся в океан цветом "Океан".
В лоб:
верхний ряд 1,4,3 - "Океан"
второй ряд 1, 5, , 5 - "Океан", 1 - нет выхода в океан "Лужа" (все окружающие выше или "Лужа")
третий ряд 2, 3, 6 - "Океан", 2 - нет выхода в океан "Лужа" (все окружающие выше или "Лужа"), 4 - неизвестно
четвертый ряд 2, 6, 2 - "Океан", 4 - неизвестно
пятый ряд 3, 1, 2 - "Океан"
обрабатываем оставшиеся, остались две 4-ки, обе получаются "Океан".

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


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