设为首页 加入收藏

TOP

CodeForces 256A (dp)
2015-07-20 18:03:39 来源: 作者: 【 】 浏览:2
Tags:CodeForces 256A


A. Almost Arithmetical Progression time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output

Gena loves sequences of numbers. Recently, he has discovered a new type of sequences which he called an almost arithmetical progression. A sequence is an almost arithmetical progression, if its elements can be represented as:

  • a1?=?p, where p is some integer;
  • ai?=?ai?-?1?+?(?-?1)i?+?1?q (i?>?1), where q is some integer.

    Right now Gena has a piece of paper with sequence b, consisting of n integers. Help Gena, find there the longest subsequence of integers that is an almost arithmetical progression.

    Sequence s1,??s2,??...,??sk is a subsequence of sequence b1,??b2,??...,??bn, if there is such increasing sequence of indexesi1,?i2,?...,?ik (1??≤??i1?? i2?? ik??≤??n), that bij??=??sj. In other words, sequence s can be obtained from b by crossing out some elements.

    Input

    The first line contains integer n (1?≤?n?≤?4000). The next line contains n integers b1,?b2,?...,?bn (1?≤?bi?≤?106).

    Output

    Print a single integer ― the length of the required longest subsequence.

    Sample test(s) input
    2
    3 5
    
    output
    2
    
    input
    4
    10 20 10 30
    
    output
    3
    
    Note

    In the first test the sequence actually is the suitable subsequence.

    In the second test the following subsequence fits: 10,?20,?10.


    题意:从给定的有序的序列中找最多的p,q,p,q.



    dp[i][j]:代表在第 i 个数前一个数是 j 的情况下的最多值,

    则:

    dp[i][j]=dp[j][pre] + 1,


    #include
        
         
    #include
         
           #include
          
            #include
           
             #include
             #include
             
               #include
              
                #include 
               
                 #include 
                
                  #include
                 
                   #include
                  
                    using namespace std; #define INF 1e8 #define eps 1e-8 #define LL long long #define maxn 100105 #define mod 1000000009 int n,a[4004],dp[4004][4004]; int main() { while(scanf("%d",&n)==1) { int ans=-1; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); int pre=0; for(int j=0;j
                   
                    


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 2112 HDU Today (Dijkstra算.. 下一篇hdu 4864 Task (贪心)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: