В новой версии статьи постарался покрыть все эти вопросы. Жду ещё конструктивных замечаний
126 2011-02-20 17:58:01
Re: Дерево отрезков (изменение на отрезке) (5 ответов, оставленных в Feedback)
127 2011-02-20 17:55:39
Re: Наибольший общий префикс двух подстрок (10 ответов, оставленных в Feedback)
Так описанный выше метод и работает для сдвигов (см. пост Oleg, могу выложить и свой код). Вообще суфф. массив же на самом деле для сдвигов строится, это с помощью спец. символа его обычно заставляют работать для суффиксов.
128 2011-01-13 00:25:43
Re: Циклы в графах (2 ответов, оставленных в Algo)
Эм, там в статье несколько опущен случай неориентированного графа (добавил себе в TODO).
Вообще для неор графа надо немножко изменить алгоритм: навесить одну доп. проверку. А именно, в функцию dfs передавать вершину p - это номер вершины, по которой мы попали в v. Тогда внутри dfs в цикле перед всеми остальными проверками надо дописать проверку:
if (to == p) continue;
Тем самым мы избежим этой проблемы, которую вы описали: мы никогда не будем пытаться пройти по только что пройденному ребру в обратную сторону.
Соответственно, при вызове dfs (to) мы теперь ещё передаём вершину p, т.е. вместо этого пишем dfs (to, v). В основной программе вызывать надо dfs (i, -1).
129 2011-01-04 12:44:17
Re: Немного статистики (8 ответов, оставленных в Offtopic)
Не знаю, может быть, так задетектилось.
130 2011-01-04 00:37:47
Тема: Прорешаем Кормена! (6 ответов, оставленных в Offtopic)
Почти год назад один из участников сообщества (с ником Banin) предложил сделать в Википедии раздел с упражнениями из Кормена "Алгоритмы: Построение и анализ". Предлагалось публиковать развёрнутые решения к упражнениям и задачам в этой книге.
Собственно, вот недавно мы решили заняться этой идеей вплотную. Ссылка на этот раздел Википедии: http://e-maxx.ru/wiki/Алгоритмы:_построение_и_анализ.
Пока этим разделом занимались только я и homo_sapiens (http://e-maxx.ru/wiki/Участник:Homo_sapiens). Мы успели сделать не очень много: всего пару десятков упражнений, но среди них уже много достаточно интересных и поучительных. В общем, предлагаю и Вам присоединиться к этому занятию
P.S. Напоминаю, что для этого Вы должны зарегистрироваться в Википедии этого сайта. При редактировании следуйте, пожалуйста, принятым правилам оформления! Для указания своего авторства вписывайте в заголовок "Решение (~~~)", и вместо трёх тильд вики автоматически подставит ссылку на Ваш профиль.
131 2011-01-04 00:13:00
Re: Суффиксный массив (4 ответов, оставленных в Feedback)
Да, кажется, это правильные исправления, хотя я не проверял на тестах...
132 2011-01-04 00:12:22
Re: Ошибки в статье "Линейные диофантовы уравнения с двумя переменными" (3 ответов, оставленных в Feedback)
Ой, как много ошибок... Спасибо.
133 2011-01-03 12:33:37
Re: Немного статистики (8 ответов, оставленных в Offtopic)
Обновил первый пост со статистикой.
134 2011-01-03 11:49:54
Re: Оптимизация сайта (7 ответов, оставленных в News)
В целом, к концу года удалось обуздать нагрузку на сервер.
Ужесточил ограничение на нагрузку сервера с одного IP. Т.е. если вы начинаете долбить сайт своим wget'ом (и, например, это дало нагрузку в несколько процентов серверного процессора), то спустя несколько минут Вам перестанет показываться сам сайт, а будет выдаваться табличка "Сайт вызвал перегрузку процессора и закрыт". Для всех остальных людей в это время сайт будет по-прежнему доступен. Этот вид блокировки включается, если нагрузка с IP превысила 1% от мощности процессора.
Кстати, тариф сервера - 3.5% от мощности серверного процессора. При этом у меня в настройках стоит, что нагрузке разрешается доходить до 10% (типа поблажка со стороны хостера), и только при его превышении сайт будет временно отключаться для всех посетителей сразу.
Добавил кеширование в Википедии. Там есть магические настройки кеширования, про которые точно никто не может сказать, насколько сильно они помогают, но кеширование APC + файловое кеширование для анонимусов привело к тому, что нагрузка на сервер упала раза в 2-3. В общем, как я и предполагал, самое тормозное звено на сайте - MediaWiki.
А форум и код самого сайта даже не пришлось трогать - эта нагрузка оказалась не критической. Хотя вот думаю всё же реализовать файловое кеширование и на самом сайте, на всякий случай
135 2010-12-18 23:27:33
Re: Большой Биномиальный коэффициент (12 ответов, оставленных в Algo)
Так тоже не получится. разложить на простые и восстановить получится только если M "square-free".
А точно ли? Китайская теорема работает, даже когда модули не простые, главное - их взаимная простота.
Посчитаем ответ по каждому модулю pi_^qi, и запустим Гарнера.
136 2010-12-17 13:34:34
Re: Метод Гаусса решения системы линейных уравнений (2 ответов, оставленных в Algo)
Всё правильно, вы как раз заметили два связанных факта
Почему при нахождении ответа мы просто берём x[ i ] = d[ i ]? Потому что в моей реализации все c[ i ][ i ] = 1.
Почему они равны единице? Потому что я каждый раз сокращаю на c[ i ][ i ] всю строку, что вы и отметили вторым куском кода. Более логично было бы ещё дописать осле этого цикла a[ i ][ i ] = 1, но я этого не написал, просто потому что эти значения вообще больше нигде не будут использоваться.
Но, если угодно, можно убрать цикл сокращения, но тогда надо будет при нахождении ответа сделать деление на a[ i ][ i ], и ещё в самом гауссе при отнимании одной строки от другой надо будет текущую строку делить на a[ i ][ i ].
137 2010-12-17 12:54:48
Re: Большой Биномиальный коэффициент (12 ответов, оставленных в Algo)
Может быть, получится развить это?
Так же побьём всё на блоки длины P, а в каждом все числа сократим на gcd с P, от хвоста запустимся рекурсивно.
Но, как минимум, плохо то, что асимптотика серьёзно зависит P.
138 2010-12-17 12:49:54
Re: lcp в суффиксном массиве (2 ответов, оставленных в Algo)
Да, никак руки не дойдут. А старый LCP, который у меня описан, прибить надо
139 2010-12-06 22:06:35
Re: Вопрос по компилятору MinGW C++ (4 ответов, оставленных в Problems)
И еще : откуда можно скачать последний MinGW, который сам всё автоматически установит? Гуглил уже два дня
140 2010-11-29 18:22:07
Re: Алгоритм BPSW: не понял один момент (2 ответов, оставленных в Algo)
Это деление v на 2 по модулю n (где n нечётно).
Если число v - и так чётное, то результат деления - просто v/2.
Если v - нечётное, то результатом будет (v+n)/2.
141 2010-11-29 16:17:30
Re: Номер по скобочной последовательности с двумя типами скобок (2 ответов, оставленных в Algo)
В самом деле, написано было очень неточно. Сейчас переписал это место (и заодно ещё внёс небольшие исправления в статью).
142 2010-11-01 10:47:13
Re: Алгоритм Крускала (3 ответов, оставленных в Algo)
Хотя это, наверное, странная уловка - ведь с точки зрения скрытой константы более информативно написать "log M"
143 2010-10-28 23:45:14
Re: Вопрос по С++ (5 ответов, оставленных в Problems)
malloc (x) - выделить память длиной x байт, и вернуть указатель на эту память.
Это нужно, когда мы хотим использовать массив какого-то размера, но заранее не знаем этот размер. Либо когда нам надо создавать структуры какого-то типа, но мы заранее не знаем, сколько их будет, - тогда каждый экземпляр такой структуры будем создавать отдельным вызовом malloc'а.
assert(expr) - вычисляет значение выражения expr, и если оно = false, то падает с рантаймом.
Удобно для всякого рода отладок. В режиме компиляции Release обычно этот макрос сам переключается в режим, когда вообще ничего не делает.
144 2010-10-28 23:41:15
Re: Хэш подстроки и его быстрое вычисление (1 ответов, оставленных в Algo)
Вроде всё правильно. Массив P - содержит все степени заданного числа-основания хеша (P[ i ] - это константа P в степени i).
Речь там о том, что если мы подсчитаем хеши от всех префиксов H[ i ], то разность двух таких префиксных хешей H[ j ] - H[ i-1 ] даст хеш от подстроки S[i..j], но умноженный на P в степени i.
145 2010-10-10 20:12:56
Re: какая структура данных? (6 ответов, оставленных в Problems)
про большой тест - смешно а какой четвертьфинал?
правильное решение - неявное декартово дерево. оно умеет обменивать два подмассива местами (даже не обязательно соседних). на сайте вроде более-менее описано это.
146 2010-10-04 22:24:15
Re: Задачка на динамику. (2 ответов, оставленных в Problems)
Я правильно понял, что елей одного сорта можем сажать сколько угодно?
Мне кажется, решать можно так: динамика d[ i ][ j ], где i - текущая рассматриваемая клумба, j - номер последней клумбы, в которую посадили ель. Тогда есть два перехода: мы либо не сажаем в i никакую ель - тогда переходим в d[ i+1 ][ j ] с тем же значением, либо пытаемся посадить какую-нибудь ель в i - тогда перебираем номер k сорта ели, проверяем, что так мы не бросим тень на клумбу с номером j, и переходим в состояние d[ next ][ i ], где next - номер первой клумбы после правого конца тени текущей ели.
147 2010-09-27 00:24:45
Re: Ним в поддавки и теорема Шпрага-Гранди (4 ответов, оставленных в Problems)
Добавлю, что насколько я знаю, теория Шпрага-Гранди вообще не обобщается на случай игр в поддавки (misere по-английски). Вроде бы ним в поддавки - одна из немногих игр, для которых это удалось, да и то вон какое шаманство получается
148 2010-09-27 00:22:11
Re: Максимальное паросочетание в произвольном графе (3 ответов, оставленных в Algo)
Улучшил статью, - теперь сказано и про размер макс. парсоча (с наметками док-ва), и про нахождение самого паросочетания (хотя по-прежнему за не очень крутую асимптотику).
149 2010-09-25 18:11:06
Re: Библиографические ссылки (1 ответов, оставленных в Feedback)
Спасибо. Есть такая у меня слабость - забываю ставить ссылки на книги/статьи
Буду стараться исправить это.
150 2010-09-22 09:50:55
Re: Максимальное паросочетание в произвольном графе (3 ответов, оставленных в Algo)
Окей, мне вчера тоже на почту написали об этом.
Я видел этот факт в литературе (над доказательством ещё подумаю, пока неочевидно), но мне показалось, что искать этот ранг в рандомизированной матрице будет очень ненадежно (всё же одно дело - посчитать определитель всей матрицы и сравнить его с нулём, и совсем другое - использовать фактически множество значений миноров для нахождения ранга), поэтому я не включал это в статью. Но, похоже, на практике это тоже работает неплохо, поэтому это надо написать тоже.
Спасибо.