Задать вопрос
Портал помощи студентам №1

Учебные работы на заказ без посредников
и переплат!

,

ул. Добролюбова, 16/2

support@professsor.com
Служба техподдержки
Решение задачЗаказ 17800

Две задачи на деревья

договорная

На аукционе

15 мая 2019 в 08:58
17 мая
Описание работы

С++.При решении задач нужно привести собственную реализацию необходимой структуры данных на базе списка, использовать библиотеки STL нельзя. 1)Хеширование (массив линейных списков). Ограничение по времени 2 с. Реализуйте структуру данных типа “множество строк”. Хранимые строки – непустые последовательности длиной не более 10 символов, состоящие из строчных латинских букв. Структура данных должна поддерживать операции добавления строки в множество, удаления строки из множества и проверки принадлежности данной строки множеству. Максимальное количество элементов в хранимом множестве не превосходит 106. Формат ввода Каждая строка входных данных задает одну операцию над множеством. Запись операции состоит из типа операции и следующей за ним через пробел строки, над которой проводится операция. Тип операции – один из трех символов: + означает добавление данной строки в множество; - означает удаление строки из множества; ? означает проверку принадлежности данной строки множеству. Общее количество операций во входном файле не превосходит 106. Список операций завершается строкой, в которой записан один символ # – признак конца входных данных. При добавлении элемента в множество НЕ ГАРАНТИРУЕТСЯ, что он отсутствует в этом множестве. При удалении элемента из множества НЕ ГАРАНТИРУЕТСЯ, что он присутствует в этом множестве. Формат вывода Программа должна вывести для каждой операции типа ? одну из двух строк YES или NO, в зависимости от того, встречается ли данное слово в нашем множестве. Пример Ввод ? bye ? hello - bye - hello + hello + bye ? bye - bye ? bye ? hello + hello + bye + hello + bye + hello + bye + hello + bye - bye - hello # Вывод NO NO YES NO YES Примечания Простейший способ посчитать хеш-функцию от строки - сложить коды всех символов, входящих в строку и взять остаток от деления на количество участков в хеш-таблице(Не проходит по времени). 2) Гарри Поттер и сбалансированное дерево. Ограничение по времени 1 секунда. В Министерстве Магии на двери комнат наложены чары, которые автоматически нумеруют комнаты: стоит ввести в эксплуатацию новую комнату, как на её двери тут же появляется табличка с номером. Новый номер вычисляется как число, на единицу большее максимального существующего на данный момент номера комнаты. Естественно, ранее существовавшие номера при этом не меняются. Первая созданная комната, разумеется, получила номер 1. Если же комната больше не нужна, то её дематериализуют, и все номера комнат, большие номера уничтожаемой комнаты, уменьшаются на единицу. Благодаря этому нумерация комнат всегда остается сплошной. Гарри Поттеру удалось узнать номера комнат в министерстве, где могут находиться артефакты, обеспечивающие Сами-Знаете-Кому бессмертие. Казалось бы, теперь найти их и уничтожить не составит труда. Но не тут-то было. Благодаря своей связи с Гарри, Волан-де-Морт сразу же узнал про открытие Гарри. Поэтому он перенесся в министерство и стал уничтожать комнату за комнатой. Теперь Гарри, видя номер на двери, не знает, какой у этой комнаты был номер раньше. Но зато он знает, какие номера были на дверях комнат, которые уничтожал и уничтожает его враг (ведь Гарри тоже чувствует все, к чему причастен Волан-де-Морт). Вы должны помочь Гарри! Конечно, никто не просит вас сражаться с Вы-Догадываетесь-Кем, но ведь вы можете помочь Гарри быстрее определить настоящий номер комнаты, около которой он находится. Формат ввода В первой строке входа указаны число N - количество комнат в министерстве N (1 ? N ? 109) и число M (1 ? M ? 105). Каждая из последующих M строк имеет следующий формат: где - одна из букв 'D' (Destroy) или 'L' (Look at), а - номер на двери комнаты, которая оказывается уничтоженной в данный момент, или на которую в данный момент смотрит Гарри. Известно, что в процессе битвы будет уничтожено не более 104 комнат. Формат вывода Выход должен содержать для каждой строки L входных данных настоящий номер (который был до начала всего этого безобразия) комнаты, на которую смотрит Гарри. Числа должны располагаться по одному в строке. Пример Ввод 20 7 L 5 D 5 L 4 L 5 D 5 L 4 L 5 Вывод 5 4 6 4 7 Примечания Важно. Задача должна быть решена с использованием сбалансированного бинарного дерева поиска.


Вход на сайт
Войти
Данная функция доступна только
для зарегистрированных пользователей
Пожалуйста, авторизуйтесь, или пройдите регистрацию
Войти
Подтвердите ваш e-mail

Для завершения регистрации подтвердите свой e-mail: перейдите по ссылке, высланной вам в письме.

После этого будет создан ваш аккаунт и вы сможете войти на сайт и в личный кабинет.

ОК