Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/47: Рейтинг темы: голосов - 47, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 13.01.2018
Сообщений: 13
1

Найти количество уникальных подпоследовательностей заданной последовательности

14.01.2018, 22:36. Показов 8844. Ответов 3

Author24 — интернет-сервис помощи студентам
Помогите с составлением алгоритма, оптимального по времени. У меня нет никаких конкретных идей кроме полного перебора.


В первой строке вводится целое число N — количество ожидающих покупателей (1 ⩽ N ⩽ 1000000). Вторая строка содержит N натуральных чисел (1 ⩽ ai ⩽ 1000000). Выведите количество различных подпоследовательностей по модулю 1000000007 (109 + 7). Подпоследовательностью {xnk} называется числовая последовательность, которая составлена из членов последовательности {xn} и в которой порядок следования ее элементов совпадает с их порядком следования в исходной последовательности {xn}.

Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт

Ввод:
4
1 2 1 3

Вывод:
13

В тесте из условия Михаил может найти следующие 13 различных подпоследовательностей:{1}, {1,1}, {1,1,3}, {1,2}, {1,2,1}, {1,2,1,3}, {1,2,3}, {1,3}, {2}, {2,1}, {2,1,3}, {2,3}, {3}.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2018, 22:36
Ответы с готовыми решениями:

Найти количество двух- и количество трехразрядных чисел в заданной последовательности
Помогите,пожалуйста, написать программу. Вводится последовательность из Nцелых чисел. Найти...

Найти сумму и количество элементов заданной последовательности
4)Последовательность кончающаяся нулём, вычислите сумму и количество элементов(ноль не учитывается)

Найти количество четных элементов заданной последовательности
Помогите решить..Дана последовательность целых чисел, за которой следует 0. Найти количество...

В заданной последовательности найти количество элементов равных нулю
3)Дано n-ое количество элементов, вычислить количество нулей.

3
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
14.01.2018, 23:15 2
Ivan_Anikin, ссылка на задачу есть? У меня есть кое-какие идеи, но пока не могу четко их сформулировать. Буду еще думать, хотелось бы иметь возможность самому сдать задачу.
0
0 / 0 / 0
Регистрация: 13.01.2018
Сообщений: 13
15.01.2018, 00:25  [ТС] 3
https://olympiads.ru/moscow/20... ning.shtml Тур за 10 января, задача С.
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
16.01.2018, 04:08 4
Так и не придумал решение. Только какие-то идеи есть. Вот чувствуется что здесь нужна простая динамика
dp[i] = количество уникальных подпоследовательностей которые заканчиваются числом a[i]
И вроде бы dp[i] = dp[0] + dp[1] + ... + dp[i-1] + 1, потому что мы тупо берем подпоследовательность которая заканчивается на a[0] и добавляем к ней a[i], подпоследовательность конец которой a[1] и дописываем a[i] и.т.д +1 потому что еще одна подпоследовательность которая состоит из одного числа a[i]. Но проблема в том, что числа могут повторяться(ну если б не повторялись ответ был бы 2n-1 ). И я никак не могу придумать как это учитывать. Я запутался. Мне кажется, что если у нас было скажем 1 2 3 4 2 5 и мы дошли до 5(dp[5]), мы должны суммировать не все числа до 5, двойку наверно не надо брать 2 раза, нужно прибавить dp[4] - только последнюю двойку, а первую не надо. И важно это все еще как-то быстро делать, за N log N хотя бы... Буду очень рад если кто-то расскажет как решать, редко тут на форуме задачи посложнее поиска минимума в массиве.

Добавлено через 2 минуты
Ну и если научиться считать dp[i] быстро и правильно, то для ответа останется только сложить все dp[i] но при этом если есть несколько одинаковых чисел a[i], то брать только то у которого dp[i] максимально. Тут либо сортировка поможет, либо map.
0
16.01.2018, 04:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2018, 04:08
Помогаю со студенческими работами здесь

Найти количество чётных элементов в заданной последовательности чисел
1.Дана последовательность чисел 13. Найти количество чётных элементов. Можно код с циклами...

В заданной последовательности чисел найти количество вхождений указанной цифры
Вводится последовательность из N целых чисел. Для каждого числа последовательности найти...

Для заданной последовательности найти количество и сумму элементов, кратных 11
1. количество и сумму элементов, кратных 11;

Найти количество нечетных элементов заданной последовательности. Без массивов
Дана последовательность целых чисел, за которой следует 0. Найти количество нечетных элементов...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru