Изменения

Перейти к: навигация, поиск

Преобразование MTF

15 байт убрано, 17:49, 6 марта 2020
Применение
Пусть дан алфавит размером <tex>M</tex> и строка <tex>S</tex> длиной <tex>N</tex>. Запомним для каждого символа алфавита свой ключ. Изначально <tex>\mathtt{keys}['a'] = 0</tex>, <tex>\mathtt{keys}['b'] = 1</tex>, <tex>\dots</tex> , <tex>\mathtt{keys}['z'] = M-1</tex>. Соединим все вершины в дерево по ключу.
<code>
'''list<int>''' mtf(N):
'''list<int>''' result(N)
merge(cur, tree) <font color=darkgreen> //Объединяем нашу вершину и дерево по ключу</font color=darkgreen>
'''return''' result
</code>
Функция <tex>\mathtt{findanswer}</tex> считает ответ так: если при спуске из вершины дерева мы должны идти вправо, то прибавляем к ответу количество вершин левого поддерева + 1, иначе ничего не добавляем к ответу.
| 0 || 16 || 4/5 || 0
|-
| 1 || 2 1 || 1/10 20 || 10110
|-
| 2 || 1 || 1/20 || 110111
|-
| 3 || 1 2 || 1/20 10 || 11110
|}
Анонимный участник

Навигация