摘要: 解法一: f[i][j]表示数列A的前i个和数列B的前j个且以B[i]结尾的最长公共上升子序列 f[i][j]=f[i−1][j] (a[i]≠b[j]) f[i][j]=max(f[i−1][j],f[i−1][t]+1) (a[i]=b[j] 且 1 <= t < j) #include <io 阅读全文
posted @ 2020-07-11 16:01 Sexyomaru 阅读(105) 评论(0) 推荐(0)
摘要: 分析:暴力法是可以做的但是时间复杂度O(n2),竞赛选手很容易想到用线段树,树状数组来优化时间复杂度,这里贴几种容易理解的方法 方法一:归并排序,归并排序可以求逆序对,这是我们熟悉的,所以在归并排序的合并过程,我们可以求出右边小于当前数的有几个,这道题需要返回每个位置的右边小于它的元素数量,我们可以 阅读全文
posted @ 2020-07-11 13:26 Sexyomaru 阅读(130) 评论(0) 推荐(0)