1

(11 ответов, оставленных в Problems)

Спасибо сдал, еще одной моей проблемой кажется самой большой было то, что я использую 5 вызовов split и merge вместо 3, для того, чтобы поставить следующее число на свое место. Т.е. получается что 5 * n * logn TLE, а 3 * n * logn АС, грубо говоря.
до

inline void swapper(int l, int r)
{
    pnode L,MID,R;
    split(T,L,R,l);
    split(R,MID,R,r - l + 1);
    if (MID) MID -> rev ^= true;
    merge(T,L,MID);
    merge(T,T,R);
    split(T,L,T,1);
}

после

inline void swapper(int l, int r)
{
    pnode L,MID,R;
    split(T,L,R,r);
    split(R,MID,R,1);
    if (L) L -> rev ^= true;
    merge(T,L,R);
}

2

(11 ответов, оставленных в Problems)

Не помогло вот с заменой на массив http://pastebin.com/qk34VMFs. Нет сохранилось ли у тебя решение этой задачи, чтоб заслать ее на spoj? Или не знаешь ли других проверяющих систем с этой задачей?

3

(11 ответов, оставленных в Problems)

http://pastebin.com/AHJLPeYi вот здесь код)

4

(11 ответов, оставленных в Problems)

Пытаюсь сдать эту задачу на spoj.pl никак не получается уложиться в тл, на локальном компьютере работает очень быстро, можно ли как нибудь ускорить алгоритм, делаю в точности то, что написано выше?

5

(13 ответов, оставленных в Problems)

А где я могу сдать эту задачу? Ссылка приведенная на acm.sgu.ru/olimp не работает.

6

(13 ответов, оставленных в Problems)

MBo пишет:

Вот тут кое-что есть
http://linulysses.wordpress.com/2011/06 … alization/
второй цикл for - не с единицы начинается

Ссылка у меня не работает.

7

(13 ответов, оставленных в Problems)

MBo пишет:

>все указатели умножаются
точно ли все?

Не могли бы вы скинуть русскоязычную версию книги, на английском я плохо понимаю, в реализации O(n * k)???

8

(13 ответов, оставленных в Problems)

MBo пишет:

>cложность получается O(n * k)

Если мне не изменяет память, там по сути очередь по приоритетам используется в простейшей линейной реализации. Для значительных k - очередь на основе бинарной кучи даст log(k) на каждый шаг вместо k

Там в реализации после нахождения следующего числа, все указатели умножаются на соответствующие простые числа до тех пор, пока эти числа не станут больше текущего найденного числа. Как эту операцию можно проводить быстрее чем линейно?

9

(13 ответов, оставленных в Problems)

MBo пишет:

hamming problem
рассматривается, например, в книге Дейкстра "Дисциплина программирования"

Заинтересовался этой задачей, почитал книгу, нашел алгоритм, там используется метод указателей и их сдвигов. Общая сложность получается O(n * k) в тайм лимит не укладывается или же столько операций укладывается в ТЛ?

10

(7 ответов, оставленных в Offtopic)

e-maxx пишет:

У меня появилась идея: вы делаете push_back в вектора, и при этом вектор может ресайзиться, в результате пойнтеры rev начинают указывать на не существующие уже структуры.

Спасибо помогло, изначально определил размер и не делал push_back.

11

(7 ответов, оставленных в Offtopic)

У меня сэмпл не проходит, в сэмпле n = 2 m = 2 k = 3, то есть будет всего n + m вершин + сток и исток 22 вполне достаточно, но рантайм. Причем программа отрабатывает правильно на сэмпл выводит правильный ответ, потом выводятся ok и here, которые я поставил и только после рантайм.

12

(7 ответов, оставленных в Offtopic)

Попалась задача на максимальный поток. Вот код http://pastebin.com/53UsTpRk
Когда начал производить дебаг оутпут, то к моему удивления программа доходит до конца, то есть выводит сообщения которые стоят в самом конце программы, убил уже 3 дня, никак не могу понять в чем ошибка, помогите разобраться.

13

(3 ответов, оставленных в Problems)

Решал задачи...

14

(3 ответов, оставленных в Problems)

Вроде есть кое какая идея, но реализовав ее я получаю WA 5, может быть алгоритм верный, но я допустил баг. В общем вот какая идея, построим выпуклую оболочку. Теперь для всех точек по абсциссе ответ будет ближайшая сверху целая точка по данному графику. Причем при нахождении очередной точки обновляем левый конец отрезка (хотя не очень уверен что это необходимо). Извиняюсь если объяснил смутно. Может ли кто-нибудь опровергнуть этот алгоритм или подтвердить его. Как мне кажется я упустил какой-то маленький крайний случай?
UPD НЕВЕРНАЯ ИДЕЯ, не правильно понял условие
UPD2 каждый раз считаете максимум среди следующих m высот, если текущая cur, то это значение равно

max{(a[i] - cur) / 1, (a[i + 1] - cur) / 2, ... (a[i + m - 1] - cur) / m}

везде округляете вверх, выводите ответ и обновляете текущую высоту. AC за 0.046с

15

(3 ответов, оставленных в Problems)

Что то в голову не приходит как нужно использовать дерево отрезков, для переупорядочивания в нужном порядке данные массивы.

16

(5 ответов, оставленных в Problems)

бин поиск нельзя использовать тут нету монотонности ответа, например тест
0
abcdabcde
есть ответ длины 8 но нету ответов меньших длин
решил задачу перебором длин

17

(3 ответов, оставленных в Problems)

http://acm.sgu.ru/problem.php?contest=0 … oblem=354. Строю ориентированный граф, в котором вершины являются ячейки матрицы, а ребра между ячейками обозначают какая ячейка больше. Топологически сортирую и расставляю значения. Первую часть реализовывал следующим образов: для массива left, постепенно строю порядок для данной строки, беру следующий элемент и вставляю его в позицию значения данного элемента, через неявное декартово дерево, аналогично для topa. Получается сложность n^2logn. ТЛ на 15 тесте. Правильно ли я оценил сложность данного алгоритма, и есть ли какой нибудь алгоритм лучше?

18

(5 ответов, оставленных в Problems)

Бин поиском нахожу максимальную допустимую длину подстроки N^2logN после чего нахожу минимальную лексикографическую подстроку N^2 и получаю TL, есть алгоритм оптимальнее или у меня баг в реализации?

19

(5 ответов, оставленных в Problems)

http://acm.sgu.ru/problem.php?contest=0&problem=337

20

(3 ответов, оставленных в Problems)

Как можно повысить точность вычислений используя данные формулы, в с++ log10 дает погрешности?

21

(2 ответов, оставленных в Problems)

Как реализовать этот алгоритм? Ну никак не получается за такую сложность! Подскажите пожалуйста!