Size: a a a

2020 March 11

DK

Dmitry Kozyrev in pro.algorithms
unsigned answ(0);
for (int bit = 31; bit >= 0; bit--) {
   if (curr->left->count() < (1u << bit)) {
       curr = curr->left;
   } else {
       answ |= (1u << bit);
       curr = curr->right;
   }
}
источник

DK

Dmitry Kozyrev in pro.algorithms
Аккуратно обработать случай nullptr слева и справа
источник

DK

Dmitry Kozyrev in pro.algorithms
count надо хранить - количество уникальных листьев и пересчитывать
источник

АГ

Александр Горнак in pro.algorithms
Мне кажется это некорректный алгоритм или я его не понимаю, например в левом поддереве числа 2, 4, 5
В правом тройка, тогда мы должны идти вправо и мекс будет 6, но мы пойдём влево и придём в 8, так как 3<(1<<31)
источник

KK

Kirill Kaymakov in pro.algorithms
Александр Горнак
Мне кажется это некорректный алгоритм или я его не понимаю, например в левом поддереве числа 2, 4, 5
В правом тройка, тогда мы должны идти вправо и мекс будет 6, но мы пойдём влево и придём в 8, так как 3<(1<<31)
С какого? мех будет 0
источник

АГ

Александр Горнак in pro.algorithms
Я предполагаю что 0 и 1 нам уже не подошли
источник

KK

Kirill Kaymakov in pro.algorithms
Mex мультимножества чисел это минимальное неотрицательное целое число, не входящее в множество.
источник

KK

Kirill Kaymakov in pro.algorithms
Ты, в общем, кажись не понимаешь, что мех это не максимальное число + 1)
источник

DK

Dmitry Kozyrev in pro.algorithms
Александр Горнак
Мне кажется это некорректный алгоритм или я его не понимаю, например в левом поддереве числа 2, 4, 5
В правом тройка, тогда мы должны идти вправо и мекс будет 6, но мы пойдём влево и придём в 8, так как 3<(1<<31)
Можете дать конкретный пример из чисел, которые хранятся во всем дереве, и запрос, который работает неправильно? Я обьясню на примере
источник

АГ

Александр Горнак in pro.algorithms
Вот, все вершины кроме стартовой терминальные
источник

АГ

Александр Горнак in pro.algorithms
Kirill Kaymakov
Mex мультимножества чисел это минимальное неотрицательное целое число, не входящее в множество.
Вы правы, я имел ввиду, что мы уже знаем, что в нуль и единица уже терминальные и мы пошли по единице
источник

DK

Dmitry Kozyrev in pro.algorithms
Александр Горнак
Вот, все вершины кроме стартовой терминальные
Бор это дерево, где каждая вершина имеет глубину k, где k -кол-во битов
источник

DK

Dmitry Kozyrev in pro.algorithms
У вас тут вершины разной глубины, значит он пожат, так?
источник

DK

Dmitry Kozyrev in pro.algorithms
Такое дерево?
источник

АГ

Александр Горнак in pro.algorithms
Такое, только 1, 2 и 3 тоже лежат в боре
источник

АГ

Александр Горнак in pro.algorithms
И зачем нам тянуть 0, если он все равно будет нулем?
источник

DK

Dmitry Kozyrev in pro.algorithms
В данном дереве они не лежат в боре
источник

DK

Dmitry Kozyrev in pro.algorithms
Александр Горнак
И зачем нам тянуть 0, если он все равно будет нулем?
Так строится бор
источник

АГ

Александр Горнак in pro.algorithms
Dmitry Kozyrev
В данном дереве они не лежат в боре
А как выглядит бор в котором они лежат?
источник

АГ

Александр Горнак in pro.algorithms
Понял, там нули будут в начале
источник