|
|
||||||||||||||||
Как ускорить логику цикла? [for experts]25.01.2021, 16:21. Показов 5722. Ответов 62
Приветсвую.
Есть рабочий код для простой задачи. На входе имеем начало и конец отрезкОВ надо определить какие области эти отрезки НЕ перекрыли. Грубо говоря какие доски забора остались НЕ покрашены. Например
Кликните здесь для просмотра всего текста
//битовое расположение используется для уменьшения памяти (отведенно максимум 2Гб для нашей задачи) и (надеюсь) увеличения скорости Но стоит задача его "ускорить". Т.к. например с такими входными данными этот код делается неприемлимо долго Кликните здесь для просмотра всего текста
Жду от уважаемого сообщества один из двух варианта ответа А) как еще можно ускорить данную логику ? Б) если существенно ускорения выше обозначенной логики не возможно, подскажите алгоритм (словесный код) как можно быстро (всмысле не написать код быстро а чтоб программа быстро крутилась) решить данную задачу ?
0
|
||||||||||||||||
| 25.01.2021, 16:21 | |
|
Ответы с готовыми решениями:
62
Как ускорить работу цикла?
Как ускорить выполнение цикла на Update |
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||
| 29.01.2021, 16:19 | ||||||
0
|
||||||
|
|
|||||||
| 29.01.2021, 17:51 [ТС] | |||||||
|
вообщем смог сам победить , без подглядывания на ваши варианты (а то может и красивее сделал бы
но блин что с моей головой !? почему у меня почти все задачи сводятся к куче if как заставить её думать по другому ? или это просто данно не всем ?PS: хотя просматривая лучшие варианты на codingame - мой оказывается не самый хужший , как минимум лаконичнее многих... PSS: очередной раз поражаюсь могуществу Си, ктото в 20 строчек делает код, а ктото этот же в 120 ![]() Кликните здесь для просмотра всего текста
int compare (const void * pa, const void * pb); принимает только *a, *b ну то есть массив (он же указатель) и я ни как не мог предположить что туда можно впихнуть вообще почти всё что угодно ![]() первый раз столкнулся с таким , до сих пор всё было очень строго. int на входе так int. указатель указателей так указатель указателей , а тут разрыв шаблона
0
|
|||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 29.01.2021, 22:12 | |||
![]() Когда много условий (if) - значит что система решения плохо продумана. Код в сообщении выше - мало того что наверняка проиграет в производительности, его изменение другим программистом (или даже Вами, спустя некоторое время) будет затруднительным. (возможности языка, алгоритмику, примеры, ). Имхо.
0
|
|||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 29.01.2021, 22:30 | ||
|
0
|
||
|
|
|
| 29.01.2021, 23:25 [ТС] | |
|
SmallEvil, спасибо
TheCalligrapher, ну ссылка то она ссылка но просто так один в другой не заменяются и тут даже теория не всегда помогает... понятно что нужно много практики и опыта (коего у вас не отнять) мне же пока тяжело а чаще очень тяжело бороться со всякими (*)[]-> ит.д.
0
|
|
|
|
|||||||
| 01.02.2021, 19:33 [ТС] | |||||||
|
Renji, SmallEvil, TheCalligrapher, zayats80888, Folian, господа , ради интереса хочу замерить скорость ваших вариантов /узнать насколько мой вариант уступает... вобщем
у меня отрезки записанны ввиде матрицы int fence[100][2], L длина, N кол-во;... у вас всякие векторы поинты и т.д. (чтоб я сам долго не ломал голову), подскажите плиз (каждый для своего варианта) как быстро перевести/скопировать мою матрицу в ваши инпут даты а дальше я скопирую ваши примеры и на основе моей инпут дате проверю все примеры на скорость ради интереса (если не возражаете).я имею ввиду мне нужно от каждого из вас чтото типо (например)
PS:
0
|
|||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
| 01.02.2021, 19:39 | ||||||
|
Может, стоит разобраться как эти вектора работают?
В моем случае каждый lineList.push_back({x,y}); пихает в список один отрезок x-y. Ну, вызывать push_back в цикле то вы сами сумеете? Если совсем никак, то замените весь код main до push_back на:
0
|
||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 01.02.2021, 20:16 | ||
|
Чтоб заполненный массив использовать придется немного костылей вставить; в принципе, могу подправить, но проще файлом)
0
|
||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||||||||||||||||||||||||
| 01.02.2021, 22:36 | ||||||||||||||||||||||||||||
|
Кстати, насчет Может, конечно, я где-то накосячил, но вот результаты: Кликните здесь для просмотра всего текста
Renji, ~11 секунд Кликните здесь для просмотра всего текста
TheCalligrapher, ~19 Кликните здесь для просмотра всего текста
XLAT, ~68 Кликните здесь для просмотра всего текста
SmallEvil, ~39 Кликните здесь для просмотра всего текста
Folian, ~6 ![]() Кликните здесь для просмотра всего текста
Хотя я догадываюсь, там числа часто перекрывают друг-друга. Нужно создать что-то более разрозненное, с большим количеством "дыр". Добавлено через 24 минуты Нет, всё справедливо было сказано; на сильно полосатом заборе у меня самый тормозной вариант, настолько тормозной что пока ещё неизвестно ![]() Остальные варианты, как и ожидалось, +- так же.
1
|
||||||||||||||||||||||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|
| 01.02.2021, 23:23 | |
|
1
|
|
|
|
||||||
| 01.02.2021, 23:54 [ТС] | ||||||
|
Folian, чтение / инициализация мне кажется надо вынести из таймера
только замерять сорт/подсчёт/вывод а замерьте тогда уже и моё плиз Кликните здесь для просмотра всего текста
0
|
||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 02.02.2021, 01:17 | ||
|
alexbmd, ~13,6 c чтением ~7,8 отдельно. Моё творение, навскидку, осилит этот файл с мелкими полосками примерно за 2,5 года
0
|
||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 02.02.2021, 01:22 | ||
|
0
|
||
|
Just Do It!
|
|||
| 02.02.2021, 09:08 | |||
|
чтобы одним одним плевком менять тип. часто, когда начинаешь вбивать код, не всегда ясно, какую точность там для своих вводных требует валидатор. а иногда просто хотца поэкспериментить с разными типами.
0
|
|||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 02.02.2021, 11:25 | ||
|
Кстати интересно, вчера внимания не обратил, но на малых отрезках выполняется не за 68, а за 47 примерно, т.е. в полтора раза быстрее, в то время как у остальных - в т.ч. и у SmallEvil - так же как и с большими, хотя вроде тоже через std::map.
1
|
||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||
| 02.02.2021, 12:02 | ||
|
Но со вторым файлом выводов дофига. Сейчас ради интереса посмотрел: до чисел отрезков > 100'000'000 оно мелькало секунд 50, а теперь прикинь сколько оно будет мелькать до 2'000'000'000 при более или менее одинаковом разбросе и ответь, оно тебе надо? При том что этот вывод одинаков у всех.
0
|
||
|
Just Do It!
|
||||||||
| 02.02.2021, 13:30 | ||||||||
|
я тоже щас тут поигрался с вашими тестами. результат несколько иной: SmallEvil обгоняет Renji на 30% а мой обгоняет и SmallEvil и Renji, правда если заменить std::map на std::unordered_map ![]() файл "fnc_extended.txt" был сгенерирован так:
тема того, что мы на самом деле измеряем до конца не раскрыта ...
1
|
||||||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||
| 02.02.2021, 14:30 | |||
|
Ещё посетила мысль сравнить своё с решениями на std::map на более подходящей задаче, вроде "Когда весь забор будет покрашен". Но это уже только вечером)
0
|
|||
| 02.02.2021, 14:30 | |
|
Можно ли как нибудь ускорить работу цикла for? Ускорить работу вложенного цикла for() C# Welcome to experts C++! Minsk.BelHard.vacancies: Java Experts, Team Lead, PM Как из цикла вывести данные для другого цикла? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|