0 / 0 / 0
Регистрация: 13.01.2018
Сообщений: 13
|
|
1 | |
Найти количество уникальных подпоследовательностей заданной последовательности14.01.2018, 22:36. Показов 8844. Ответов 3
Метки последовательность из чисел (Все метки)
Помогите с составлением алгоритма, оптимального по времени. У меня нет никаких конкретных идей кроме полного перебора.
В первой строке вводится целое число 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
|
14.01.2018, 22:36 | |
Ответы с готовыми решениями:
3
Найти количество двух- и количество трехразрядных чисел в заданной последовательности Найти сумму и количество элементов заданной последовательности Найти количество четных элементов заданной последовательности В заданной последовательности найти количество элементов равных нулю |
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 | |
16.01.2018, 04:08 | |
Помогаю со студенческими работами здесь
4
Найти количество чётных элементов в заданной последовательности чисел В заданной последовательности чисел найти количество вхождений указанной цифры Для заданной последовательности найти количество и сумму элементов, кратных 11 Найти количество нечетных элементов заданной последовательности. Без массивов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |