zoukankan      html  css  js  c++  java
  • 递推DP HDOJ 5328 Problem Killer

    题目传送门

     1 /*
     2     递推DP: 如果a, b, c是等差数列,且b, c, d是等差数列,那么a, b, c, d是等差数列,等比数列同理
     3             判断ai-2, ai-1, ai是否是等差(比)数列,能在O(n)时间求出最长的长度
     4 */
     5 #include <cstdio>
     6 #include <algorithm>
     7 #include <cstring>
     8 #include <cmath>
     9 using namespace std;
    10 
    11 typedef long long ll;
    12 const int MAXN = 1e6 + 10;
    13 const int INF = 0x3f3f3f3f;
    14 ll a[MAXN];
    15 int dp1[MAXN], dp2[MAXN];
    16 
    17 int main(void)  {       //HDOJ 5328 Problem Killer
    18     int T;  scanf ("%d", &T);
    19     while (T--) {
    20         int n;  scanf ("%d", &n);
    21         for (int i=1; i<=n; ++i)    scanf ("%I64d", &a[i]);
    22         if (n <= 2) printf ("%d
    ", n);
    23         else    {
    24             for (int i=1; i<=n; ++i)    dp1[i] = dp2[i] = 2;
    25             int ans = 2;
    26             for (int i=3; i<=n; ++i)    {
    27                 if (a[i-2] + a[i] == a[i-1] * 2)    dp1[i] = dp1[i-1] + 1;
    28                 if (a[i-2] * a[i] == a[i-1] * a[i-1])   dp2[i] = dp2[i-1] + 1;
    29                 ans = max (ans, max (dp1[i], dp2[i]));
    30             }
    31             printf ("%d
    ", ans);
    32         }
    33     }
    34 
    35     return 0;
    36 }
    编译人生,运行世界!
  • 相关阅读:
    go语言的垮平台编译
    vscode使用技巧
    集合
    泛型
    异常
    Java垃圾回收机制
    java学习笔记9.20
    java变量类型
    目前的学习计划
    离第一篇博客三天
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4691201.html
Copyright © 2011-2022 走看看