cugb 1032 登山(子序列)

来源:互联网 发布:农产品流通网络建设 编辑:程序博客网 时间:2024/06/01 10:28
 和合唱队形是一样的,具体解释见cugb 1009
#include<stdio.h>   int main()  {      int n,a[1005],i,j,d[1005],dp[1005],max;      scanf("%d",&n);      for(i=0;i<n;i++)         scanf("%d",&a[i]);      d[0]=1;      for(i=1;i<n;i++)      {         d[i]=1;                       for(j=0;j<i;j++)            if(a[j]<a[i]&&d[j]+1>d[i])               d[i]=d[j]+1;         }      dp[n-1]=1;      for(i=n-2;i>=0;i--)      {         dp[i]=1;                       for(j=n;j>i;j--)            if(a[j]<a[i]&&dp[j]+1>dp[i])               dp[i]=dp[j]+1;         }            for(i=0;i<n;i++)         d[i]+=dp[i];      for(i=max=0;i<n;i++)         if(max<d[i])            max=d[i];      printf("%d",max-1);      return 0;  }