Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 
Вернуться
Тема: Runtime error testcase #5
1 2
  21  Егоров Илья Валерьевич, 09 августа 2020 г. 17:05:38
      Это нормально, просто вот, скажем, излишнего обращения к памяти надо избегать (равно как "магических чисел" и прочего), на это т.с. надо привычку выработать. Сам доступ к памяти медленный, даже если нужные страницы кэшированы процессором + злоупотребление памятью чревато ухудшением свопаемости анонимных страниц. Лучше плохой IPC и большее кол-во инструкций на выходе, чем стадо обращений к памяти, когда веских причин нет (скажем, если заготовлен массив синусов, чтоб их заново не вычислять, то это вполне хорошо для времени выполнения). Об этом, правда, можно думать скорее спустя лет ну этак 3-5 программерской возни, т.к. в начале пути об этом сильно можно и не волноваться. Да и то если все еще писать на сишке/плюсах/подобных, т.к. во всяких интерпретируемых, jit-зависимых и т.п. из попыток нормального управления ресурсами выйдет скорее клоунада.
  22  Болатбеков Мейрбек, 09 августа 2020 г. 16:50:39
      Егоров Илья Валерьевич, благодарю за ответ. Просто я только недавно начал изучать графы, а точнее обходы в них
  23  Егоров Илья Валерьевич, 09 августа 2020 г. 16:27:35
      Но все же ради приличия избавьтесь хотя бы от ids: ids[i][j] спокойно заменяется на i*n + j, что можно оформить нормально инлайновой/статической функцией.
  24  Егоров Илья Валерьевич, 09 августа 2020 г. 16:23:37
      Сказану дополнительно: оба решения грязные, нельзя так писать. Но да ладно уж, сей ресурс не про чистый код и даже не про оптимальную реализацию.
  25  Егоров Илья Валерьевич, 09 августа 2020 г. 16:20:38
      Точнее, тьфу, даже и не количеством точек, а сугубо N^2, ибо id на каждую клетку. Скажем, тест, где точка только в самом конце при N>=7 — тоже для вашего решения проблемный. Либо возьмите 40^2 размером массива векторов adj, либо динамически выделяйте, либо еще что по своему вкусу.
  26  Егоров Илья Валерьевич, 09 августа 2020 г. 16:16:21
      Да хотя бы в определении adj. Он у вас почему-то ограничен 41 значением, когда по логике его размер должен быть равен количеству точек. Вот, например, на таком тесте завалится:
7
X......
.......
.......
.......
.......
.......
......@
  27  Болатбеков Мейрбек, 09 августа 2020 г. 15:38:03
      Просто подскажите по коду где именно ошибся
  28  Егоров Илья Валерьевич, 09 августа 2020 г. 15:03:22
      Тьфу. iostream и ряд сопутствующего из стандартной тяжеловесной библиотеки плюсов.
  29  Егоров Илья Валерьевич, 09 августа 2020 г. 15:01:07
      Поправка к моему предыдущему: впрочем, тут оно и не надо, т.к. ввод форматированный: пробельные символы игнорируются (что, кстати, тоже влияет на производительность, ибо лишние проверки, когда заведомо известен формат ввода). Сам иногда про этот факт забываю, т.к. форматированный ввод на сишке не использую, равно как и stdio. Вот если бы было cin.get() вместо cin >> ..., то было бы актуально.
  30  Болатбеков Мейрбек, 09 августа 2020 г. 14:43:45
      Матус Даниил Дмитриевич, я там вершины пронумеровал от 0 до n-1, каждый из которых хранит i, j текущей позиции в другом массиве.
  31  Егоров Илья Валерьевич, 09 августа 2020 г. 14:39:06
      Матус Даниил Дмитриевич, насчет первого: это спокойно обходится проверкой на код символа (например, можно упрощенно проверять на >32: не соответствующие этому пропускать). Читать строками и лишь затем разбирать все же неэффективно (как по памяти, так и по времени), но преимущественно когда автор стремится к оптимизации. Посимвольное чтение через cin все же не назовешь прям уж эффективным. Но все же при желании можно и автомат построить.
  32  Матус Даниил Дмитриевич, 09 августа 2020 г. 14:32:51
      https://pastebin.com/Z1zKZKRf
вот мой если что он больше зато читабельней ну и там есть чутка косяков ибо я его писал давно
кста задача lines 2 тоже самое просто чутка надо чтение изменить итого почти 100 баллов наизях
  33  Матус Даниил Дмитриевич, 09 августа 2020 г. 14:27:14
      2
что ты тут намутил с обходом в ширину
почему кидаешь в него 1 значения а не координаты из 2 чисел а главное зачем париться
  34  Матус Даниил Дмитриевич, 09 августа 2020 г. 14:24:16
      1 не совету тебе читать массив символов так как ты это делаешь ибо когда ты так делаешь ты читаешь еще пробелы в конце строки которые появляются при выделении и переход на новую строку советую тебе читать обычный стринг н раз а потом ее бить на значения
  35  Матус Даниил Дмитриевич, 09 августа 2020 г. 14:12:12
      чел твои коменты щас удалят пошли в обсуждение задачи
  36  Болатбеков Мейрбек, 09 августа 2020 г. 12:52:28
      Добрый день! Как то решил задачу №381. Lines, но в 5-ом тесте словил runtime error. Уже час не могу найти баг в своем коде. Прошу вас помочь. Код по ссылке https://paste.ofcode.org/325gkhb5frdeeVVRqjzCZgq
1 2

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2020, E-mail: admin@acmp.ru