Задачку про деку задал
elephantum во времена, когда работал в Невале, кодал Героев5, вел перепалки за Петон и в общем и целом сколько-то относился к геймдев-тусовке (как это я забыл его зафрендить). Вот пусть расскажет о том, как ему тот геймдев и Невал видиццо столько времени опосля.
Задачка типа сложная и на просветление. Помнится, первый решил
zemedelec минут
(
Read more... )
предполагаем что длина дека от n = 1 до m = 1
Меняем один элемент в начале, прокручиваем на m, считая сумму элементов по модулю 2, прокручиваем назад. Меняем элемент обратно, повторяем процедуру. Если суммы равны - то n = m; m *= 2 иначе мы имеем границы длины очереди. Когда границы есть - продолжаем в том же духе, только как следующее приближение берем середину интервала. В общем половинное деление получается, N*log(N).
Вот как-то так, как будет время - напишу в коде.
Reply
Reply
Reply
Reply
Если бежать на m вперед и считать не сумму эл-в, а сумму маркеров.
Не посмотрел на даты, думал это все совсем недавно. Спасибо за ответ. Когда прочитал решение протупил)
Reply
Reply
Reply
Тогда сложность будет O(n*log(кол-во маркеров)), кол-во маркеров длины k в среднем примерно равно n/2^k.
log(n/2^k) = log(n) - k.
Так что если угадать с длиной маркера (log(n)), то сложность в среднем получиться O(n).
Reply
Reply
Более строго наверно сказать так:). При затратах памяти C, мы со средней сложностью O(n) сможем определять размер дека, при log(n) <= C. :)
Я не утверждаю, что таким алгоритмом можно получить решение со средней сложностью O(n), это только попытка описать влияние длины маркера на среднюю сложность алгоритма.
Спасибо за замечание.
Reply
Reply
2. Ищем в послед-ти эл-в длины m, максимальное число(k) идущих подряд маркеров (возможно их неск-ко). Берем любую и добавляем еще один -> теперь у нас есть уникальный маркер в деке (послед-ть k+1 выбранного маркера) и сложность его определения O(n).
3. Бежим по кругу и считаем ск-ко элем-в (с учетом уникального маркера легко). O(n).
4. Вытираем добавленный маркер.
По-моему лучше всего использовать маркер единичной длины.
Reply
Leave a comment