for(int i=1;i<=n;i++) 初始化 for(int i=0;i<n;i++) { int k=lower_bound(g+1,g+n+1,A[i])-g; d[i]=k; g[k]=A[i]; }
假设我们已经算出来了d(以i为结尾的最长上升子序列) d[a]=d[b] 那么 如果a<b a一定比b更优秀(能接的数更多)
所以我们只需要记录最优答案即可
g数组记录最优答案;
而这里显然数字越大次数越来越大 比方说 现在存的 1 来了个6 那么6就排到第二位 g[2]=6 而又来了个5 显然比6优秀 那么g[2]=5;