NYOJ 214 单调递增子序列(二)

来源:互联网 发布:日本软件行业 编辑:程序博客网 时间:2024/06/05 23:46

/*单调递增子序列(二)
时间限制:1000 ms | 内存限制:65535 KB
难度:4
描述
给定一整型数列{a1,a2…,an}(0

#include<cstdio>int dp[100005];int main(){  int n,x;  int mid,r,l,len,i;  while(~scanf("%d",&n))  {    len=0;    scanf("%d",&x);    dp[++len]=x;    for(i = 2 ; i <= n ; i++)    {       scanf("%d",&x);       if( x > dp[len] )          dp[++len]=x;        else        {          l=1;          r=len;         while(r>=l)         {           mid=(r+l)/2;           if(dp[mid]>x)              r=mid-1;            else             l=mid+1;          }          dp[l]=x;        }    }      printf("%d\n",len);   }    return 0;  } 

代码二:(超时)

但是思路做法都是一样的

#include<stdio.h>#include<string.h>int dp[100005],s[100005];int main(){ int n,i,j,count;  while(~scanf("%d",&n))  {     memset(dp,0,sizeof(dp));     count=0;     for(i=0;i<n;i++)     {         scanf("%d",&s[i]);     }     for(i=0;i<n;i++)     {       for(j=count;j>=0;j--)       {          if(s[i]>s[j])            {               dp[j+1]=s[i];               if(j==count)               count++;               break;               }             }          }       printf("%d\n",count);     }      return 0; }
0 0
原创粉丝点击