второй блок кода
написано cnt[maxlen]
должно быть cnt[alphabet]
1 2010-11-06 15:01:26
Тема: Суффиксный массив (4 ответов, оставленных в Feedback)
2 2010-10-20 14:01:49
Re: какая структура данных? (6 ответов, оставленных в Problems)
а если мы сначала сдвигаем [x1 ... x9] на 5 а потом [x5 ... x23] на 15 ? Я ж говорю разные подстроки сдвигаем. впрочем это уже не важно..
3 2010-10-19 23:02:10
Re: какая структура данных? (6 ответов, оставленных в Problems)
to Oleg - не понял.. какой счетчик? мы делаем сдвиг для подстроки. много запросов. ну разумеется для разных подстрок
такс, на счет декартова дерева.. я правильно понимаю что если нам явным образом не нужны сами приоритеты приоритеты, то они сводятся только к тому чтобы получить "хорошее" дерево, т.е. можно их просто заменить случайным выбором кого к кому прицеплять в операции merge? (ну аналогично системе непересекающихся множеств)
4 2010-10-10 21:22:34
Тема: Дерево отрезков - память (2 ответов, оставленных в Algo)
Хм. помоему не 4n а 2n-1 вершин должно быть. все вершины кроме листьев - разделяют элементы - их столько же сколько можно поставить перегородок между n элементами = n-1. ну и плюс листья - n штук. если еще для удобства добавить нулевой элемент - будет 2n.
Более того опыт показывает (http://e-maxx.ru/algo/segment_tree - скопировал просто отсюда код и потестил) что половина массива t - нули. даже если n = (2^k)+1. получается не полное двоичное дерево.. в чем нет ничего плохого при такой реализации (если делим пополам массив нечетной длины то "большая половина" будет левой частью).
5 2010-10-10 20:26:30
Re: какая структура данных? (6 ответов, оставленных в Problems)
год назад Москва..
спасибо. ушел перечитывать декартово дерево
6 2010-10-10 18:49:02
Тема: какая структура данных? (6 ответов, оставленных в Problems)
какую структуру данных на массиве лучше взять чтоб быстро выполнять операции типа взять две соседние подстроки ([ai..aj] и [a{j+1} ... ak]) и поменять местами? в просто массиве долго переставлять, а в списке - долго искать iй элемент.. если еще какоето дерево сверху посторить то в нем нада еще чето менять.. вощем чето я не понимаю.
на прошлом 1/4ть финале асма была такая задача - нужно было выполнять много циклических сдвигов подстрок. фактически циклический сдвиг на к - это и есть поменять две соседние подстроки. Мы тогда эту задачу решили на прямую просто классом string - и прокатило.. но жури потом заявило что у них прост почему-то не было большего теста...
7 2010-09-26 22:37:02
Re: Ним в поддавки и теорема Шпрага-Гранди (4 ответов, оставленных в Problems)
бр, это понятно. собственно про это я и писал
Как решать немного по другому вроде понятно
интересно другое.. (читайте выше)
8 2010-09-26 20:26:57
Тема: Ним в поддавки и теорема Шпрага-Гранди (4 ответов, оставленных в Problems)
Ним в поддавки - тотже ним, только кто берет последний камень - проигрывает.. граф игры практически совпадает с графом ним, вот только положение 1 - проигрышное.. а вот 0 какое? точно не проигрышное, иначе 1 - выигрышное.. значит 0 - выигрышное. получается что есть выигрышное состояние, из которого нет переходов.. и что делать? это противоречит части того (про выигрышные и проигрышные состояния) что написано тут http://e-maxx.ru/algo/sprague_grundy ... Хотя игра вроде равноправная.. Или я чето не так понимаю? в любом случае если мы пытаемся посчитать функцию Гранди она получается такойже как у обычного ним. но тогда скажем три кучки по одному камню - ним - выигрываем, а ним в поддавки - проигрываем - не сходится... Так равноправная ли это игра?
Как решать немного по другому вроде понятно, но интересно, как эта задача соотносится с теорией Шпрага-Гранди.
9 2010-09-18 12:54:27
Re: двоичное возведение в степень (3 ответов, оставленных в Algo)
Хм.. а мне на оборот какт странно было читать про n/2 и n/2.. прост раскладываем n не на n/2 и n/2 а сразу в сумму степеней двойки. Впрочем не суть)
10 2010-09-17 12:46:20
Тема: двоичное возведение в степень (3 ответов, оставленных в Algo)
Я чет не понял зачем сложный if.. онж по сути добавляет итерацию цикла лишнюю после каждого срабатывания n&1
while (n)
if (n & 1) {
res *= a;
--n;
}
else {
a *= a;
n >>= 1;
}
не прощели так? прост проходимся по числам вида n^(2^k) , если нужно - домножаем
while(n) {
if(n & 1)
res *= a;
a *= a;
n = n >> 1;
}
11 2010-05-01 23:28:11
Тема: опечатка в Крускле с непер. множествами (1 ответов, оставленных в Feedback)
for (int j=a; j!=p[j]; j=p[j]) p[j] = pa;
for (int j=b; j!=p[j]; j=p[j]) p[j] = pb;
после j=p[j] j сразу = pa, и мы пропускаем все элементы которые собирались "сослать" на pa..
ченить типа
for(int j=a, a=P[a]; a != pa; j = a, a=P[a]) P[j] = pa;
for(int j=b, b=P[b]; b != pb; j = b, b=P[b]) P[j] = pb;
ЗЫ.. атак сайт отл. большое вам спасибо) давно пользуюсь им, но ошибка эта все не исправляется чет)