Задача 1. Илья Мишуров
Задача 4. Эмиль Рахимов
Какие из пар операций дистрибутивны:
а) \((\gcd, \mathrm{lcm})\);
б) \((\mathrm{lcm}, \gcd)\);
в) \((\gcd, +)\);
г) \((+, \gcd)\);
д) \((\wedge, \vee)\);
е) \((\vee, \wedge)\);
ё) \((\mathrm{whatever}, P_2)\) (здесь \(P_2(x, y)=y\), \(\mathrm{whatever}\) — произвольная операция); [не попало на практику]
ж) \((P_2, \mathrm{whatever})\) [не попало на практику]?
Научимся избавляться от дистрибутивности. Какие из перечисленных операций дистрибутивны сами с собой:
а) \(+\);
б) \(\cdot\);
в) \(\min\);
г) \(\oplus\);
д) \(\wedge\);
е) \(\vee\);
ё) \(\gcd\);
ж) \(\mathrm{lcm}\)?
Что общего у всех подошедших примеров [ответ — это идемпотентные коммутативные операции (то есть \(a\times a = a\), \(a\times b=b\times a\))]? Как сделать дерево отрезков в неподошедших случаях?
а) Постройте дерево отрезков с методами set(i, x)
и min(L, R)
.
б) Как найти наименьший индекс минимума в дереве?
в) Как найти число минимумов в дереве?
Научимся избавляться от декомпозируемости операции: рассмотрим массовую операцию, которая не выражается через двуместную операцию.
а) постройте дерево отрезков с методами set(i, x)
и \(f(L, R)=\sum\limits_{i=0}^{R-L-1}{(-1)^ia_{i+L}}\);
б) постройте дерево отрезков с методами set(i, x)
и \(f(L, R)=\sum\limits_{i=0}^{R-L-1}{ia_{i+L}}\);
Дан массив из чисел, постройте структуру данных с методом find(l, r, k)
: найти \(k\)-ю порядковую статистику среди \(a_\ell, \ldots, a_{r-1}\).
Подсказка 1. Постройте структуру данных, позволяющую добавить, удалить элемент из мультимножества и позволяющую найти \(k\)-ю порядковую статистику.
Подсказка 2. Примените персистентность и решите исходную задачу.