Я какое-то время изучал «разделяй и властвуй» и сейчас изучаю следующую проблему:
Учитывая перестановку P длины N, посчитайте количество хороших сегментов. Обратите внимание, что последовательность A из N целых чисел называется перестановкой длины N, если:
1≤ A i ≤ N для всех 1 ≤ i ≤ N и A i ! = A j для всех 1 ≤ i! = J ≤ N.
Непрерывный отрезок [l, r] перестановки P равен хорошо , еслизначение (P l , P l + 1 , ..., P r ) также является непрерывным. То есть, если мы соберем P l , P l + 1 , ..., P r в новый список B и отсортируем его, то это будетудерживать:
B 1 = B 2 -1, B 2 = B 3 -1, .. ., B i-1 = B i -1, ..., B | B | −1 = B | B | -1.
Например, в перестановке [3, 2, 4, 5] есть 8 хороших сегментов:
[3], [2], [4],[5], [3,2], [4,5], [3,2,4] и [3,2,4,5]
Я проанализировал несколько случаев при объединении двухмаленькие разделенные массивы, но я не могу придумать стратегию, которая может обнаружить хорошие сегменты, которые пересекают два отдельных массива за O (N) времени.