(1) LIS: 很久之前就学过nlogn的LIS,不过早就忘了,今天一考,甚至没想到这就是LIS,然后各种蹂躏;
维护一个队列:v[]; v[i]表示长度为i的采摘顺序的最后一个采摘的西瓜的最小值,这样可以保证v数组是单调递减的。这样在每次查询中都可以根据单调性二分。就将复杂度将为nlogn。
(2) LCS: 又是很久之前学过的,不过当时就没怎么搞清楚,现在明白了,就是用一个矩阵求两个字符串的匹配情况,然后求最长的对角线。空间复杂度O(n*n) 时间复杂度O(n*n),主要是优化空间,滚动数组。
f[i][j]=f[i-1][j-1]+1; a[i]==b[j]
f[i][j]=max(f[i][j-1],f[i-