zoukankan      html  css  js  c++  java
  • BZOJ 3357: [Usaco2004]等差数列

    3357: [Usaco2004]等差数列

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

    [Submit][Status][Discuss]

    OTZ 美帝神题

    本来想的是用SORT或HASH离散化所有的可能的公差,然后再分别跑个最长路,复杂度大概是$O(N^{2}log_{N})$或$O(N^{2})$的,然而好麻烦,不想写,(╯▔皿▔)╯

    后来看到大家标的tag都是DP,动态规划之类的,想到可以直接在DP数组上做文章,看大多数懒人都是用的STL的map<int,int>勉强卡到9s,也有勤快人手写HASH表什么的。可惜BZOJ不支持C++14,不然有了unordered_map事情会简单很多。

    写着写着就WA了,看看PoPoQQQ等大爷的题解才发现特殊处理蛮多的(起码有两处吧,2333~~~)。

     1 #include <bits/stdc++.h>
     2 
     3 const int mxn = 2005;
     4 
     5 int n, ans, s[mxn];
     6 
     7 std::map<int, int> f[mxn];
     8 
     9 signed main(void)
    10 {
    11     scanf("%d", &n);
    12     
    13     if (n == 1)puts("1");
    14     else
    15     {
    16         for (int i = 1; i <= n; ++i)
    17             scanf("%d", s + i);
    18         
    19         for (int i = 1; i <= n; ++i)
    20             for (int j = 1; j < i; ++j)
    21             {
    22                 using std::max;
    23                 f[i][s[j]] = max(f[i][s[j]], 2);
    24                 f[i][s[j]] = max(f[i][s[j]], f[j][(s[j] << 1) - s[i]] + 1);
    25                 
    26                 ans = max(ans, f[i][s[j]]);
    27             }
    28         
    29         printf("%d
    ", ans);
    30     }
    31 }

    @Author: YouSiki

  • 相关阅读:
    Scrapy框架实现持久化存储
    Scrapy框架的介绍和基本使用
    处理页面动态加载数据
    爬虫数据解析
    Python爬虫基础
    Flask详解(下篇)
    Flask详解(中篇)
    CentOS 中的性能监测命令vmstat
    CentOS 7安装MySQL 8.0.15
    CF B.Kind Anton(4月8号)
  • 原文地址:https://www.cnblogs.com/yousiki/p/6399682.html
Copyright © 2011-2022 走看看