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;    
    }
    

     

    编译人生,运行世界!
  • 相关阅读:
    css的选择器
    javaScript 的变量使用
    关于外键约束
    javaScript中运算符
    css介绍和三种引入方式
    关于盒子模型
    类和类的六种关系
    DQL和DML更多操作
    javaScript的特点
    关于 让页面中的按钮 响应回车
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4482797.html
Copyright © 2011-2022 走看看