Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
#1

Алгоритм с константной асимптотикой - C++

09.01.2010, 00:17. Просмотров 562. Ответов 2
Метки нет (Все метки)

Нужно за О(1) давать ответ сколько элементов элементов последовательности установлено в 1 (первоначально - все обнулены), до определенного члена последовательности, также за О(1) нужно устанавливать новый член в 1, и иметь возможность за О(1) узнавать сколько элементов до n-ого установлено в 1.

Как это реализовать?

Добавлено через 27 минут
В принцыпе О(logN) - канает..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2010, 00:17     Алгоритм с константной асимптотикой
Посмотрите здесь:

Передача по константной ссылке C++
C++ Взятие адреса у константной переменной при объявлении
C++ Как из константной функции вызвать неконстантную?
C++ Передача параметра по константной ссылке - что это?
Присвоение массиву char константной и неконстантной строки C++
C++ Eigen - инициализация константной комлексной матрицы
C++ Вызов не константной функции, изменяющей свойства класса, из константой . Возможно?
C++ Возврат константной ссылки из функции
C++ Изменение константной ссылки в обычную или указатель
C++ Передача std::string по константной ссылке \ значению
Конвертирование константной строковой переменной в указатель на char C++
Почему меняется значение константной переменной? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
09.01.2010, 00:21     Алгоритм с константной асимптотикой #2
Давай уж - полностью задача как звучит ?

А то что-то сомнительно мне что можно за O(1) можно узнать сколько элементов до n-того установлено в 1, разъве что при записи это вычислять и записывать в отдельный массив.
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
09.01.2010, 01:31  [ТС]     Алгоритм с константной асимптотикой #3
http://acm.timus.ru/problem.aspx?space=1&num=1439

Добавлено через 2 минуты
Несмотря на свои неординарные способности, волшебники любят использовать высшую математику. А именно, они любят находить нужную комнату по ее номеру! Но, конечно же, и тут не обошлось без магии.
В Министерстве Магии на двери комнат наложены чары, которые автоматически нумеруют комнаты: стоит ввести в эксплуатацию новую комнату, как на её двери тут же появляется табличка с номером. Новый номер вычисляется как число, на единицу большее максимального существующего на данный момент номера комнаты. Естественно, ранее существовавшие номера при этом не меняются. Первая созданная комната, разумеется, получила номер 1. Если же комната больше не нужна, то её дематериализуют, и все номера комнат, большие номера уничтожаемой комнаты, уменьшаются на единицу. Благодаря этому нумерация комнат всегда остается сплошной.
Гарри Поттеру удалось узнать номера комнат в министерстве, где могут находиться артефакты, обеспечивающие Сами-Знаете-Кому бессмертие. Казалось бы, теперь найти их и уничтожить не составит труда. Но не тут-то было. Благодаря своей связи с Гарри, Волан-де-Морт сразу же узнал про открытие Гарри. Поэтому он перенесся в министерство и стал уничтожать комнату за комнатой. Теперь Гарри, видя номер на двери, не знает, какой у этой комнаты был номер раньше. Но зато он знает, какие номера были на дверях комнат, которые уничтожал и уничтожает его враг (ведь Гарри тоже чувствует все, к чему причастен Волан-де-Морт). Вы должны помочь Гарри! Конечно, никто не просит вас сражаться с Вы-Догадываетесь-Кем, но ведь вы можете помочь Гарри быстрее определить настоящий номер комнаты, около которой он находится.
Исходные данные
В первой строке входа указаны число N - количество комнат в министерстве N (1 ≤ N ≤ 109) и число M (1 ≤ M ≤ 105). Каждая из последующих M строк имеет следующий формат:
<letter> <number>
где <letter> - одна из букв 'D' (Destroy) или 'L' (Look at), а <number> - номер на двери комнаты, которая оказывается уничтоженной в данный момент, или на которую в данный момент смотрит Гарри. Известно, что в процессе битвы будет уничтожено не более 104 комнат.
Результат
Выход должен содержать для каждой строки
L <number>
входных данных настоящий номер (который был до начала всего этого безобразия) комнаты, на которую смотрит Гарри. Числа должны располагаться по одному в строке.
Пример
исходные данные результат
20 7
L 5
D 5
L 4
L 5
D 5
L 4
L 5
результат
5
4
6
4
7

Добавлено через 49 минут
я думаю что можно использовать сет, елементы в нем упорядочены, добавление происходит за logN, что для даной задачи = 16 - максимум, т.е., примерно, 10.

что-бы узнать номер комнаты достаточно знать сколько комнат было удалено до нее, причем здесь сет? если узнать указатель на первый елемент, значение которого больше номера нашей текущей комнаты и отнять указатель на начало сета получим количество елементов, которые были удалены, т.к. мы имеем сет и умеем кодить бинарный поиск, можно реализовать, но бинарный поиск нужно вести по сету, как это реализовать?
Yandex
Объявления
09.01.2010, 01:31     Алгоритм с константной асимптотикой
Ответ Создать тему
Опции темы

Текущее время: 12:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru