Алгоритм печати LCS в O (nlogn) сложности

Я пытаюсь распечатать самую длинную общую подпоследовательность из 2 длинных длинных векторов за O (nlogn) время наихудшего случая, и у меня есть три следующих условия:
1. Каждый элемент в векторе отличается
2. Каждый вектор является перестановкой другого
3. Если размер вектора равен S, то все элементы являются целыми числами от 1 до S
Я знаю, что есть способ найти длина сложности LCS в O (nlogn), которого я достиг

long long lcs_length(vector<long long> A, vector<long long> B)
{

vector<long long> C(A.size());
vector<long long> look_up(A.size());

for(long long i = 0; i < A.size(); i++)
{
look_up[A[i]-1] = i;
}for(long long i = 0; i < A.size(); i++)
{
C[i] = look_up[B[i]-1];
}

vector<int> d(A.size()+1, 1000000000);

for (int i = 0; i < A.size(); i++)
{
*lower_bound(d.begin(), d.end(), C[i]) = C[i];
}

for (int i = 0; i <= A.size(); i++)
{
long long temp;
if (d[i] == 1000000000)
{
return i;

}
}
return 0;
}

Есть ли способ на самом деле печатать LCS за O (nlogn) время?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]