最長上公升子串行 nlogn

2021-08-22 19:21:33 字數 594 閱讀 2972

fi 表示i長度的上公升子串行的最小末尾元素值

用貪心的辦法,每次訪問乙個小於當前末尾值的元素,就往前二分地找乙個可以替換的位置

#include 

#include

#include

#include

using

namespace

std;

#define debug(x) cerr << #x << "=" << x << endl;

const

int maxn = 100000 + 10;

int f[maxn],n,a[maxn],vis[maxn];

int q,fa[maxn],last[maxn],depth[maxn],len;

int find(int x) else

}return ans;

}int main()

f[1] = a[1];

len = 1;

for(int i=2; i<=n; i++)

}cout

<< len;

return

0;}

最長上公升子串行 nlogn

最長上公升子串行中對於數ipt i 向前遍歷,當數ipt j 小於ipt i 則ipt j 可作為上公升序列中ipt i 的前乙個數字 dp i max 若現在有兩個狀態a,b 滿足dp a dp b 且 ipt a ipt b 則對於後面的狀態dp a 更優 因為若ipt i dp b 則必然ip...

最長上公升子串行nlog n

nlog n 的方法從很久之前就看了,愣是沒看懂,因為這個條件 現在,我們仔細考慮計算f t 時的情況。假設有兩個元素a x 和a y 滿足 f儲存lis長度 1 x y t 2 a x a y a t 3 f x f y 沒看懂,當a x 其實這只是傳遞乙個思想而已,當兩者的lis都一樣時取最小值...

最長上公升子串行nlogn演算法

這題目是經典的dp題目,也可叫作lis longest increasing subsequence 最長上公升子串行 或者 最長不下降子串行。很基礎的題目,有兩種演算法,複雜度分別為o n logn 和o n 2 a.o n 2 演算法分析如下 a 1 a n 存的都是輸入的數 1 對於a n 來...