Выбрать соревнование | Задачи | Послать решение | Результаты проверки | Статистика по задачам | Вопросы и ответы | Результаты соревнования | Состояние сервера | Изменить данные | Управление командой | Помощь |
01/09/2007 | Алгоритмы и структуры данных. Деревья (E) |
Ограничения: время – 250ms/500ms, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Определить максимальное количество сравнений ключей и среднее количество сравнений при успешном поиске (суммарное количество сравнений ключей для каждого ключа в таблице, деленное на количество ключей) для unordered_set и хеш-таблицы с открытой адресацией после заполнения таблицы заданными N значениями.
Обе структуры должны иметь одинаковый заданный размер M (M>N).
В unordered_set
размер указывается в конструкторе как первый аргумент.
Количество сравнений в unordered_set
можно вычислить M-1∑i=0ki⋅(ki+1)/2, где ki это
bucket_size(i)
В хеш-таблице добавить в метод find(T key)
подсчет количества сравнений в глобальной
переменной.
Первая строка ввода содержит два целых числа N и M, вторая строка – N целых чисел.
В первой строке вывести максимальное количество сравнений ключей и среднее количество сравнений при успешном поиске в unordered_set. Во второй – аналогичные значения для хеш-таблицы с открытой адресацией.
Пример ввода
10 19 1 2 3 4 10 20 100 101 1000 1001
Пример вывода
2 1.100000 3 1.200000