• bzoj 3357 [Usaco2004]等差数列 dp


    [Usaco2004]等差数列

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 486  Solved: 227
    [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

     
    想到n^2logn的算法,f[i][j]表示结尾为i公差为j的答案
    用map维护
     1 #include<cstring>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<iostream>
     5 #include<cmath>
     6 #include<queue>
     7 #include<vector>
     8 #include<map>
     9 
    10 #define N 2007
    11 #define mod 1000000007
    12 #define fzy pair<int,int>
    13 using namespace std;
    14 inline int read()
    15 {
    16     int x=0,f=1;char ch=getchar();
    17     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
    18     while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
    19     return x*f;
    20 }
    21 
    22 int n;
    23 map<int,int>f[N];
    24 int a[N];
    25 
    26 int main()
    27 {
    28      n=read();
    29      for(int i=1;i<=n;i++)
    30           a[i]=read();
    31      if(n==1)
    32      {
    33           printf("1
    ");
    34           return 0;
    35      }
    36      int ans=0;
    37      for(int i=1;i<=n;i++)
    38      {
    39           for(int j=1;j<i;j++)
    40           {
    41               f[i][a[i]-a[j]]=max(max(f[i][a[i]-a[j]],f[j][a[i]-a[j]]+1),2);
    42               ans=max(f[i][a[i]-a[j]],ans);
    43           }
    44      }
    45      printf("%d
    ",ans);
    46 }
  • 相关阅读:
    bzoj1996
    bzoj2839
    bzoj1304
    bzoj1097
    bzoj4547
    bzoj3379
    bzoj3090
    树莓派/Debian 构建LAMP Web服务器并搭建WordPress博客(一)
    树莓派/Debian Apache2 配置自建 CA 实现 HTTPS(SSL) 服务
    树莓派/Debian Apache2 实现 HTTPS(SSL) 服务
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/8847952.html
Copyright © 2020-2023  润新知