zoukankan      html  css  js  c++  java
  • 51nod 1062 序列中最大的数(打表预处理)

    题目来源: Ural 1079
    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
    收藏
    关注
    取消关注
    有这样一个序列a:
    a[0] = 0
    a[1] = 1
    a[2i] = a[i]
    a[2i+1] = a[i] + a[i+1]
     
    输入一个数N,求a[0] - a[n]中最大的数。
    a[0] = 0, a[1] = 1, a[2] = 1, a[3] = 2, a[4] = 1, a[5] = 3, a[6] = 2, a[7] = 3, a[8] = 1, a[9] = 4, a[10] = 3。
    例如:n = 5,最大值是3,n = 10,最大值是4。
    Input
    第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10)
    第2 - T + 1行:T个数,表示需要计算的n。(1 <= n <= 10^5)
    Output
    共T行,每行1个最大值。
    Input示例
    2
    5
    10
    Output示例
    3
    4

    直接看代码吧

     1 #include <iostream>
     2 using namespace std;
     3 int ans[100005];
     4 int a[100005];
     5 int n,t;
     6 void init()
     7 {
     8     ans[0]=0;
     9     ans[1]=1;
    10     a[0]=0;
    11     a[1]=1;
    12     for(int i=2;i<=100000;i++)
    13     {
    14         if(i%2==0)
    15             a[i]=a[i/2];
    16         else
    17             a[i]=a[i/2]+a[i/2+1];
    18         ans[i]=max(ans[i-1],a[i]);
    19     }
    20 }
    21 int main()
    22 {
    23     ios::sync_with_stdio(false);
    24     cin>>t;
    25     init();
    26     while(t--)
    27     {
    28         cin>>n;
    29         cout<<ans[n]<<endl;
    30     }
    31     return 0;
    32 }
    View Code
     
  • 相关阅读:
    hadoop2.2 伪分布式环境
    java Map实现的cache manager
    Java语言基础(九)
    Java语言基础(八)
    Java语言基础(七)
    Java语言基础(六)
    Java语言基础(五)
    Java语言基础(四)
    Java语言基础(三)
    Java语言基础(二)
  • 原文地址:https://www.cnblogs.com/onlyli/p/7261320.html
Copyright © 2011-2022 走看看