最长不下降子序列 (nlgn)做法

来源:互联网 发布:淘宝联盟无法登陆 编辑:程序博客网 时间:2024/04/20 07:59

题目描述

有长度为N的序列:
A1 A2 …..An
求最长不下降子序列:Ai1,Ai2,,,,,Aik, 其中ai1<=ai2<=…..<=aik
求最长不下降子序列的长度

输入

11

1 3 6 3 4 7 5 7 6 7 8

输出

8

思路

每次把当前数替换掉最小的比当前数大的数,记录下当前的长度,和max进行判断就可以了

#include<cstdio>using namespace std;int a[1000],d[1000];int ef(int f,int k){    int l=1,r=k,mid;    while(l<=r)    {        mid=(l+r)/2;        if(d[mid]==f)   return mid;        if(d[mid]<f)    l=mid+1;        if(d[mid]>f)    r=mid-1;    }    return l;}int main(){    int n,c,len;    scanf("%d",&n);    for (int i=1;i<=n;++i)        scanf("%d",&a[i]);    d[1]=a[1];    len=1;    for (int i=1;i<=n;++i)    {        c=ef(a[i],len);        d[c]=a[i];        if(c>len)   len=c;    }    printf("%d",len);}
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 汽车助力泵漏油怎么办 奔腾b70油耗高怎么办 方向机漏油了怎么办 威志油耗高怎么办 佳美2.4油耗大怎么办 笔记本电脑按键坏了怎么办 电视主板坏了怎么办 面包车电量亏电怎么办 自动挡汽车亏电怎么办 自动挡亏电了怎么办 面包车打不起火怎么办 汽车电瓶亏电怎么办 小车电池没电怎么办 汽车电瓶有电打不着火怎么办 汽车电瓶没电打不着火怎么办 汽车电池没电打不着火怎么办 汽车电瓶亏电打不着火怎么办 自动挡电瓶没电打不着火怎么办 自动挡车子没电打不着火怎么办 自动挡汽车没电打不着火怎么办 自动挡汽车有电打不着火怎么办 p0846骐达故障怎么办 汽车冷却液漏了怎么办 冷却液管子漏了怎么办 电脑网络不可用怎么办 手表带子坏了怎么办 这几天生意不好怎么办 大学不想住宿舍怎么办 在北京买车后被骗怎么办 联通套餐不到期怎么办 联通全国流量包怎么办 缤智车钥匙丢了怎么办 车遮阳板松了怎么办 洗车把内饰划了怎么办 新车销售没销量怎么办 住院时间重叠了怎么办 长安cs75油耗高怎么办 墙内线烧了怎么办 如果没买票想进高铁站怎么办 老赖拒绝还款怎么办 gta5资产不兼容怎么办