- 18, Oct 2024
- #1
Спецификация
Эту задачу легко сформулировать: ваши входные данные представляют собой непустой массив неотрицательных целых чисел, и ваша задача — разбить его на как можно меньшее количество возрастающих подпоследовательностей.
, then the output is an array of arrays[0] -> [[0]] [3,5,8] -> [[3,5,8]] [2,2,2,2] -> [[2,2,2,2]] [1154,1012,976,845] -> [[845],[976],[1012],[1154]] [6,32,1,2,34,8] -> [[1,2,8],[6,32,34]] [1,12,1,12,1,13] -> [[1,1,1,13],[12,12]] [6,4,6,13,18,0,3] -> [[0,3],[4,6,13,18],[6]] [1,2,3,2,3,4,7,1] -> [[1,1],[2,2,3,4,7],[3]] [0,9,2,7,4,5,6,3,8] -> [[0,2,3,8],[4,5,6],[7],[9]] [7,1,17,15,17,2,15,1,6] -> [[1,1,6],[2,15],[7,15,17],[17]] [4,12,2,10,15,2,2,19,16,12] -> [[2,2,2,12],[4,10,15,16],[12,19]] [10,13,9,2,11,1,10,17,19,1] -> [[1,1],[2,10,17,19],[9,11],[10,13]] [3,7,3,8,14,16,19,15,16,2] -> [[2],[3,3,8,14,15,16],[7,16,19]] [15,5,13,13,15,9,4,2,2,17] -> [[2,2,17],[4],[5,9],[13,13,15],[15]]
B
Более формально, если входной массив
- такой, что:
A
form a partition ofB
Каждый массив вA 1 2 1 2 5 4 7 1 B[0] 1 B[1] 1 2 4 7 B[2] 1 2 5
is the singleton array containingB = [[1],[1,2,4,7],[1,2,5]]
на непересекающиеся (не обязательно смежные) подпоследовательности. Индуктивно это означает, что либоA = [1,2,1,2,5,4,7,1]
is a subsequence ofB
, или первый элементB
with that subsequence removed. - а остальные образуют раздел
A
is (not necessarily strictly) increasing. - Каждый массив в
A
is minimal.
Количество массивов в
И ввод, и вывод могут быть приняты в собственном формате массива вашего языка.
Обратите внимание, что правильных результатов может быть несколько. B
.
One possible output is A
Пример
B
Рассмотрим входной массив A
is increasing.
Finally, B
. B
is also minimal.
Thus it's a valid output.
Условие разделения видно из этой диаграммы:
Кроме того, каждый массив в
нельзя разбить на две возрастающие подпоследовательности, поэтому длина
Правила и подсчет очков
A
Вы можете написать функцию или полную программу.