|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
||||||
Сталкер (не проходит по памяти)12.03.2023, 21:34. Показов 5740. Ответов 36
Метки нет (Все метки)
В городе Н при невыясненных обстоятельствах территория одного из заводов превратилась в аномальную зону. Все подъезды к территории были перекрыты, а сама она получила название промзоны. В промзоне находятся N зданий, некоторые из них соединены дорогами. По любой дороге можно перемещаться в обоих направлениях.
Начинающий сталкер получил задание добраться до склада в промзоне. Он нашел в электронном архиве несколько карт территории промзоны. Так как карты составлялись разными людьми, то на каждой из них есть информация только о некоторых дорогах промзоны. Одна и та же дорога может присутствовать на нескольких картах. В пути сталкер может загружать из архива на мобильный телефон по одной карте. При загрузке новой карты предыдущая в памяти телефона не сохраняется. Сталкер может перемещаться лишь по дорогам, отмеченным на карте, загруженной на данный момент. Каждая загрузка карты стоит 1 рубль. Для минимизации расходов сталкеру нужно выбрать такой маршрут, чтобы как можно меньшее число раз загружать карты. Сталкер может загружать одну и ту же карту несколько раз, при этом придется заплатить за каждую загрузку. Изначально в памяти мобильного телефона нет никакой карты. Требуется написать программу, которая вычисляет минимальную сумму расходов, необходимую сталкеру, чтобы добраться от входа в промзону до склада. Формат ввода В первой строке входного файла находятся два натуральных числа N и K (2 ≤ N ≤ 2000; 1 ≤ K ≤ 2000) - количество зданий промзоны и количество карт соответственно. Вход в промзону находится в здании с номером 1, а склад - в здании с номером N. В последующих строках находится информация об имеющихся картах. Первая строка описания i-ой карты содержит число ri - количество дорог, обозначенных на i-ой карте. Затем идут ri строк, содержащие по два натуральных числа a и b (1 ≤ a, b ≤ N; a ≠ b), означающих наличие на i-ой карте дороги, соединяющей здания a и b. Суммарное количество дорог, обозначенных на всех картах, не превышает 300 000 (r1 + r2 + ... + rK ≤ 300 000). Формат выходных данных В выходной файл необходимо вывести одно число - минимальную сумму расходов сталкера. В случае, если до склада добраться невозможно, выведите число -1. Пример. Ввод: 12 4 4 1 6 2 4 7 9 10 12 3 1 4 7 11 3 6 3 2 5 4 11 8 9 5 3 10 10 7 7 2 12 3 5 12 Вывод: 3 Мой алгоритм такой: каждую карту разбиваю на компоненты связности и далее строю граф, где вершиной является номер компонента связности. И далее иду по этому графу обходом в ширину. Так же учитываю, что начало и конец могут быть сразу в нескольких компонентах связности. Мой алгоритм вроде выдает верный ответ, но по памяти все плохо. Что я делаю не так? Мой код:
0
|
||||||
| 12.03.2023, 21:34 | |
|
Ответы с готовыми решениями:
36
помогите оптимизировать программу. Не проходит тест, из-за большого количества используемой памяти. FreeZoneMods Онлайн Сталкер ЧН Вылеты в Сталкер ЗП/Сигероус мод 2.1 |
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 13.03.2023, 14:42 | |
|
0
|
|
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
||
| 13.03.2023, 15:42 [ТС] | ||
|
0
|
||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 13.03.2023, 15:58 | |
|
DarkShaddow, можно собрать словарь - здание: список карт.
По идее, с ограничением списка всех дорог не должно много места в памяти занять Добавлено через 3 минуты Но для питона не знаю, уж больно много он на целое отводит. То есть, если бы я делал задачу на java, то о таких мелочах даже не задумывался бы - там с очень большим запасом проходим и по памяти и по времени, а тут постоянно оглядываться нужно
0
|
|
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
||||||||
| 13.03.2023, 16:16 [ТС] | ||||||||
|
Red white socks, вроде сделал все, как вы сказали.
Единственное не понял зачем хранить связанные вершины 15 4 5 4 9 3 9 6 2 2 10 11 12 7 1 4 4 7 7 10 6 13 8 13 8 14 13 14 8 1 5 2 13 2 3 5 10 5 11 5 12 11 12 6 13 1 14 15
Кстати, по факту получился объемный граф?
0
|
||||||||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
||
| 13.03.2023, 16:22 | ||
|
Добавлено через 3 минуты Вечером посмотрю детально, реализация на беглый взгляд мне не нра. Очереди реализовываться должны через deque, перебирать элементы методом pop() (при переборе элементы очереди из неее уходят). map - оч.плохое имя для переменной
0
|
||
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
|
| 13.03.2023, 16:28 [ТС] | |
|
понял, подправлю
0
|
|
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
||
| 13.03.2023, 16:32 | ||
|
Ключевая ошибка, конечно
0
|
||
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
||||||
| 13.03.2023, 17:39 [ТС] | ||||||
|
Red white socks, подправил все. Теперь 3 тест проходит, но на 7 выдает TL.
0
|
||||||
|
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
|
||||||
| 13.03.2023, 17:56 | ||||||
Сообщение было отмечено DarkShaddow как решение
Решение
DarkShaddow, можешь это попробовать, но скорее всего не пройдет все тесты
Кликните здесь для просмотра всего текста
2
|
||||||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 13.03.2023, 20:00 | |
|
0
|
|
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
|
| 13.03.2023, 22:22 [ТС] | |
|
ну, теперь могу решать в свое удовольствие ни с кем не соревнуясь)))
1
|
|
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
|
| 14.03.2023, 11:17 [ТС] | |
|
rRczZZ, все тесты прошли, спасибо. Вот только не пойму, где в моем коде ошибка (тот что я последний кидал). Ну, ладно пойду разбираться.
0
|
|
|
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
|
|||||||||||
| 14.03.2023, 12:24 | |||||||||||
|
DarkShaddow, ну я вот пока на informatics.msk тестирую своё решение, python (мой, который выше) проходит там по памяти и времени все тесты и валится на двух простых (5ом и 6ом) с неправильным ответом.. идея такая:
с++, валится на 5 и 6 с WA
Тогда я убрал поиск компонент связности и закинул все дома со всех карт в граф как вершины, единица только у рёбер из нулевой карты (сток в нулевую карту есть у всех вершин во всех картах). Как и ожидалось - он не проходит по памяти большие тесты (10 и 13, жрёт больше 12 mb), но! 5 и 6 проходит, 300kb 3 ms. с++, правильное решение, валится на 10 и 13 по памяти
Собственно, я написал генератор тестов, и он всё утро ищет тест где первое решение не совпадает со вторым.. пока не нашел. Так что, Ваше решение я еще не особо смотрел (своего то нет), + там же, вроде, Red white socks помогает, но я закинул его на informatics и оно валится по памяти на 15 из 20 тестах, могу предположить, что Вы не победили проблему с квадратичной памятью (её можно решить добавлением промежуточных вершин, нулевой карты в моём случае), о которой я писал выше (с картинкой), но это не точно.
2
|
|||||||||||
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
|
| 15.03.2023, 10:07 [ТС] | |
|
rRczZZ, понял, но я тестировал не на информатикс, а на яндекс.контест. Там у меня ваше решение на python прошло)
0
|
|
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
|
| 15.03.2023, 10:11 [ТС] | |
|
все 19 тестов
1
|
|
|
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
|
||
| 16.03.2023, 01:55 | ||
Сообщение было отмечено DarkShaddow как решение
Решение
Победил informatics. В 5 и 6 тестах приходят рёбра в вершины не из отрезка [1,N]. Путей, влияющих на ответ, по ним нет. При чтении карты можно сразу выкидывать такие вершины, и решение проходит все тесты.
Добавлено через 10 минут Только заметил, что ограничение по памяти 256mb. А я тестировал на informatics к 130mb. Тогда, в целом, можно последний код подогнать. В первую очередь нужно убрать set'ы, они очень много жрут, и словари там гдеони не нужны. Но т.к. я не могу тестировать на яндексе, то не буду выкладывать тут код. Фишка в том, что исправленная версия проходит на informatics 18 из 20 тестов, и в худшем случае, по моим замерам (которые не точные скорее всего) ест 170 mb.
3
|
||
|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
|
| 16.03.2023, 09:02 [ТС] | |
|
rRczZZ, спасибо вам за помощь! Учту ваши советы и попробую переделать
0
|
|
| 16.03.2023, 09:02 | |
|
FreeZoneMods на Лазарусе в Онлайн Сталкер ЧН Не запускается игра Сталкер Чистое небо Долгие загрузки в Сталкер: Зов Припяти Апгрейд для игры в Warfase, Сталкер. Сумасшедший сталкер в Stalker: Тень Чернобыля Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|