|
7 / 7 / 0
Регистрация: 03.10.2020
Сообщений: 164
|
||||||
Сталкер (не проходит по памяти)12.03.2023, 21:34. Показов 5493. Ответов 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 | |
|
Помогаю со студенческими работами здесь
37
FreeZoneMods на Лазарусе в Онлайн Сталкер ЧН Не запускается игра Сталкер Чистое небо Долгие загрузки в Сталкер: Зов Припяти Апгрейд для игры в Warfase, Сталкер. Сумасшедший сталкер в Stalker: Тень Чернобыля Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|