LIS nlogn优化板子

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;

posted @ 2021-09-11 11:08  旅玖旅玖  阅读(18)  评论(0编辑  收藏  举报