• BZOJ 3357: [Usaco2004]等差数列( dp )


    dp(x, p) 表示序列中第x个数, 上一个数是p构成的等差数列的最长. 转移时从[1, x)中枚举p = seq[] 就行了.时间复杂度O(n²logn)

    ---------------------------------------------------------------------------------

    #include<bits/stdc++.h>
       
    #define rep(i, n) for(int i = 0; i < n; i++)
    #define Rep(i, n) for(int i = 1; i <= n; ++i)
    #define clr(x, c) memset(x, c, sizeof(x))
     
    using namespace std;
     
    const int maxn = 2009;
     
    int A[maxn], n;
    map<int, int> dp[maxn];
     
    int main() {
    freopen("test.in", "r", stdin);
    int ans = 0;
    cin >> n;
    rep(i, n) scanf("%d", A + i);
    rep(i, n) rep(j, i)
    ans = max(ans, dp[i][A[j]] = max(2, max(dp[i][A[j]], dp[j][A[j] * 2 - A[i]] + 1)));
    if(n == 1) puts("1");
    else cout << ans << endl;
    return 0;
    }

    --------------------------------------------------------------------------------- 

    3357: [Usaco2004]等差数列

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 144  Solved: 56
    [Submit][Status][Discuss]

    Description

        约翰发现奶牛经常排成等差数列的号码.他看到五头牛排成这样的序号:“1,4,3,5,7”
    很容易看出“1,3,5,7”是等差数列.
        给出N(1≤N≤2000)数字AI..AN(O≤Ai≤10^9),找出最长的等差数列,输出长度.

    Input

        第1行:一个整数N.
        第2到N+1行:每行一个整数Ai,表示牛的号码.

    Output

     
        最长等差数列的长度.

    Sample Input

    5
    1
    4
    3
    5
    7

    Sample Output

    4

    HINT

    Source

  • 相关阅读:
    windows相关命令记录
    使用addviewController()实现无业务逻辑跳转
    eclipse实用快捷键
    spring注解的相关配置
    day15-python-函数参数、名称空间、作用域
    day14-python-函数参数
    day13-seek、文件修改、函数及其参数
    day12-python-文件读取模式,文件指针移动
    day11-python-文件基础操作
    Ubuntu 更新软件的命令
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4668734.html
Copyright © 2020-2023  润新知