zoukankan      html  css  js  c++  java
  • hdu 4512 吉哥系列故事——完美队形I(最长公共上升自序加强版)

    首先要去学习最长公共上升子序列LCIS,然后是对n*n效率的算法进行优化,这里要注意的是可以求出来的序列中间可以有一个最高的。刚开始将输入的数组进行逆置,写下来发现这可能存在问题。不过具体是什么也没有仔细想明白。

    #include<bits/stdc++.h>
    using namespace std;
    
    int dp[300][300],a[300];
    
    int main()
    {
        int n,_,i,j,k,ans,mx,t;
        scanf("%d",&_);
        while(_--)
        {
            scanf("%d",&n);
            for(i=1; i<=n; i++)
            {
                scanf("%d",&a[i]);
            }
            memset(dp,0,sizeof(dp));
            ans=1;
            for(i=1; i<=n; i++)
            {
                mx=0;
                for(j=n; j>i; j--)
                {
                    dp[i][j]=dp[i-1][j];
                    if(a[i]>a[j]&&mx<dp[i-1][j])
                        mx=dp[i-1][j];
    
                    if(a[i]==a[j]&&dp[i][j]<mx+1)
                        dp[i][j]=mx+1;
    
                    if(2*dp[i][j]>ans)
                        ans=2*dp[i][j];
    
                    for(k=i; k<j; k++)
                        if(a[k]>a[j])
                        {
                            if(2*dp[i][j]+1>ans)
                                ans=dp[i][j]*2+1;
                        }
                }
    
            }
            printf("%d
    ",ans);
    
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    Linux下find命令详解
    shell if语句
    目标文件系统映像制作工具mkyaffs2image
    编译内核
    FPS含义
    linux下echo命令详解
    Mssql数据库语句综合
    string 字符串操作
    Lession 15 Good news
    Mysql使作心得(备份,还原,乱码处理)
  • 原文地址:https://www.cnblogs.com/xryz/p/4847896.html
Copyright © 2011-2022 走看看