zoukankan      html  css  js  c++  java
  • 等差数列(bzoj 3357)

    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
    /*
      f[i][a[j]]表示以a[i]结尾,并且上一个数是a[j]的最长等差数列。
      转移方程:f[i][a[j]]=max(f[i][a[j]],max(f[j][2*a[j]-a[i]]+1,2))
      然后用map转移。
      这里不得不说map的神奇:我刚开始写了一个玄学的算法,用自己造的数据跑,秒杀map,然后TLE。
      然而map AC了!!!AC了……
    */
    #include<cstdio>
    #include<iostream>
    #include<map>
    #define N 2010
    using namespace std;
    int a[N],n;
    map<int,int> f[N];
    int main(){
        scanf("%d",&n);
        if(n==1){
            printf("1");return 0;
        }
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        int ans=0;
        for(int i=2;i<=n;i++)
            for(int j=1;j<i;j++){
                f[i][a[j]]=max(f[i][a[j]],max(f[j][2*a[j]-a[i]]+1,2));
                ans=max(ans,f[i][a[j]]);
            }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    在linux上安装python, jupyter, 虚拟环境(virtualenv)以及 虚拟环境管理之virtualenvwraper
    linux
    Django ORM那些相关操作
    Django 中 form 介绍
    MySQL完整性约束
    git入门
    MySQL表的操作
    努力努力再努力
    Docker初始
    IO模型
  • 原文地址:https://www.cnblogs.com/harden/p/6254910.html
Copyright © 2011-2022 走看看