求LCS(最长公共子序列)的长度的nlogn算法可以通过转换为求一个数列的LIS。与动归的n^2复杂度相比。
假如说我要求数列“1 2 3 5 4”和“5 4 3 2 1”的LCS,那么可以求第二个序列中的每个元素在第一个序列中的位置。
“5”在第一个序列的第四个位置,“4”在第五个位置,“3”在第三个位置,“2”在第二个位置,“1”在第一个位置,所以只需要对“4 5 3 2 1”这个序列求LIS的长度即可求出相应的LCS。
求LIS可以参考我先前博客的二分法算法:
具体有一道经典题目:
大地的秘密:
题目背景
在你的帮助之下,三仙兽终于弄清楚了到北京的道路,于是他们收拾一下行装,出发了。
第一站他们要经过被成为“米不亚亚亚亚尔”的神秘森林,由于有蓬絮这位走迷宫的高手打头阵,前进的道路变平坦了很多。但当他们来到这片森林的核心地带时,还是遇到了一点点小麻烦……
题目叙述
现在他们位于神秘森林的核心部位,面前有两条主要的大道,不用说,一条通向光明,一条通向黑暗。大家当然想奔向光明,远离黑暗,可是蓬絮研究了半个时辰也研究不出个所以然。
倒是细心的花楹发现了线索,她在地上搜寻时,发现了遗落在草丛里的一张纸,纸上如是写道:
致想要寻找出口的人们:
这里必须你们真正了解大地的运行规律&#