zoukankan      html  css  js  c++  java
  • BZOJ 3357--[Usaco2004]等差数列(STL&DP)

    3357: [Usaco2004]等差数列

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

    题目链接:

        http://www.lydsy.com/JudgeOnline/problem.php?id=3357 

    Solution

      f [ i ] [ j ] 表示以a[i]为末尾,j为倒数第2个数的最长等差数列长度。。

      j的范围很大,用map维护。。。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<map>
    #define pa pair<LL,LL>
    #define LL long long
    using namespace std;
    inline int read(){
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    inline void Out(int a){
        if(a>9) Out(a/10);
        putchar(a%10+'0');
    }
    const LL inf=1e9+10;
    const LL mod=1e9+7;
    const int N=2050;
    int n,ans,a[N];
    map<int,int> f[N]; 
    int main(){
    	n=read();
    	if(n==1){
    		printf("1
    ");return 0;
    	}
    	for(int i=1;i<=n;++i)
    		a[i]=read();
    	for(int i=1;i<=n;++i){
    		for(int j=1;j<i;++j){
    			f[i][a[j]]=max(f[i][a[j]],2);
    			f[i][a[j]]=max(f[i][a[j]],f[j][a[j]+a[j]-a[i]]+1);
    			ans=max(ans,f[i][a[j]]);
    		}
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    

      

      

    This passage is made by Iscream-2001.

  • 相关阅读:
    web api的新玩法
    发送邮件的小功能(.net core 版)
    Docker入门命令备份
    在控制台进行依赖注入(DI in Console)
    .net Core 2.0使用NLog
    .Net Core下使用WCF
    C#枚举最优雅的用法
    Jquery.Ajax的使用方法
    PuTTY+Xming实现X11的ssh转发
    使用XMing+putty运行linux图形界面程序
  • 原文地址:https://www.cnblogs.com/Yuigahama/p/9668281.html
Copyright © 2011-2022 走看看