zoukankan      html  css  js  c++  java
  • LCIS HDOJ 4512 吉哥系列故事——完美队形I

    题目传送门

    题意:中文题面

    分析:LCIS应用:设置b[]为a[]的反转,然后LCIS,若相等的是自己本身,则+1, 否则+2

    代码:

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    
    const int MAXN = 2e2 + 10;
    const int INF = 0x3f3f3f3f;
    int a[MAXN], b[MAXN];
    int dp[MAXN][MAXN];
    int n;
    
    int LCIS(void)
    {
        int k = 0;    int ans = 0;
        for (int i=1; i<=n; ++i)
        {
            k = 0;    
            for (int j=1; j<=n-i+1; ++j)
            {
                dp[i][j] = dp[i-1][j];
                if (a[i] == b[j])
                {
                    if (j != n - i + 1)
                    {
                        if (dp[i][j] < dp[i][k] + 2)
                            dp[i][j] = dp[i][k] + 2;
                    }
                    else
                    {
                        if (dp[i][j] < dp[i][k] + 1)
                            dp[i][j] = dp[i][k] + 1;
                    }
                }
                else if (a[i] > b[j])
                    if (dp[i][j] > dp[i][k])    k = j;
    
                if (ans < dp[i][j])    ans = dp[i][j];
            }
        }
    
        return ans;
    }
    
    int main(void)        //HDOJ 4512 吉哥系列故事——完美队形I
    {
        //freopen ("HDOJ_4512.in", "r", stdin);
    
        int t;
        scanf ("%d", &t);
        while (t--)
        {
            scanf ("%d", &n);
    
            for (int i=1; i<=n; ++i)    scanf ("%d", &a[i]);
            for (int i=1; i<=n; ++i)    b[n-i+1] = a[i];
            memset (dp, 0, sizeof (dp));
    
            printf ("%d
    ", LCIS ());
        }
    
        return 0;    
    }
    

     

    编译人生,运行世界!
  • 相关阅读:
    JSTL标签用法
    (转)javascript正则实战
    Spring中几种数据源的配置
    (转)常用正则表达式
    EL表达式详解
    JAVA环境变量配置(转)
    S2SH整合步骤
    正则表达式30分钟教程(转)
    在Flash Player 10.2中使用原生鼠标指针
    time
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4482797.html
Copyright © 2011-2022 走看看