Size: a a a

2021 April 18

AT

Anatoly Tomilov in pro.algorithms
чем меньше ифов, тем лучше
источник

AT

Anatoly Tomilov in pro.algorithms
лучше сделать лишние вычисления, чем вставить 1 if
источник

AT

Anatoly Tomilov in pro.algorithms
он даже для перестановок уже коллизии будет давать
источник

CD

Constantine Drozdov in pro.algorithms
вы не там ищете такты, открытая адресация с вынесенным заголовком даст выравнивание на 16, все слова лезут в 16, так что вы захотите использовать примерно три хешмапы - очень частых коротких слов, менее частых длиной 13 и всех остальных
источник

CD

Constantine Drozdov in pro.algorithms
мы не перестановки, а слова языка хешируем
источник

AT

Anatoly Tomilov in pro.algorithms
я так не пробовал. Но вариант с открытой адресацией — топовый
источник

AT

Anatoly Tomilov in pro.algorithms
не все в том тексте. Там есть слово (а может быть и не одно) длиной в 70
источник

CD

Constantine Drozdov in pro.algorithms
это UNLIKELY по куче причин, в частности из-за особенностей ввода мы можем обрабатывать это слово в 10 раз медленнее обычного
источник

AT

Anatoly Tomilov in pro.algorithms
да. Но на if/switch, который будет диспатчить длину слова, будет тратиться CPU для каждого слова
источник

AT

Anatoly Tomilov in pro.algorithms
задача — посчитать частоты слов именно в этом тексте, так что решение с perfect hash-ем годится
источник

AT

Anatoly Tomilov in pro.algorithms
если сравнивать ещё и строки-ключи, то решения с хешмапой и двух секунд вряд ли преодолеют
источник

CD

Constantine Drozdov in pro.algorithms
это ужасно (нет, потому что LIKELY первая ветка)
источник

CD

Constantine Drozdov in pro.algorithms
вообще задача для просветления: задумано число N, запрос <=>, найти N за log N * (1 + o(1))
источник

AT

Anatoly Tomilov in pro.algorithms
я пробовал оптимизации по длине слова — локально ухудшало. Может быть если сильно постараться, то это что-нибудь и даст (отдельная ветка для очень длинных слов).
источник

AT

Anatoly Tomilov in pro.algorithms
но не вблизи односекундных времён
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
В чем подвох?
источник

CD

Constantine Drozdov in pro.algorithms
не 2 * log N
(1 + o(1))
источник

CD

Constantine Drozdov in pro.algorithms
задача не проифать первое слово, а обеспечить прогрев индексов частой хештаблицы
источник

AT

Anatoly Tomilov in pro.algorithms
стартуешь с INT_MAX условно говоря. Для случайного числа. Равномерно распределённого в 0..INT_MAX будет log(N)
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
А если экспоненциальные шаги делать?
источник