51nod 2级算法题-1062
2017-04-25 11:32
190 查看
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 中最大的数。 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
数据太水,直接预处理出数组来。
#include <iostream> #include <cstring> #include <string> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <queue> #include <stack> using namespace std; #define endl "\n" const int maxn=100100; int a[maxn]; void Init(){ memset(a,0,sizeof(a)); a[1]=1; a[2]=1; for(int i=3;i<maxn;i++){ if(i%2==0){ a[i]=a[i/2]; }else{ a[i]=a[i/2]+a[i/2+1]; } } int Max=0; for(int i=0;i<maxn;i++){ if(a[i]>Max){ Max=a[i]; } a[i]=Max; } return ; } int main (){ ios::sync_with_stdio(false); Init(); int T; cin>>T; while(T--){ int n; cin>>n; cout<<a <<endl; } }
相关文章推荐
- 【模拟】1432 独木舟【51nod】【难度:2级算法题】
- 51nod 2级算法题-1095
- 51nod 2级算法题-1279
- 51nod 2级算法题-1119
- 51nod 2级算法题-1315
- 51nod 2级算法题-1007
- 51nod 2级算法题-1428
- 51nod 2级算法题-1010
- 51nod 2级算法题-1014
- 51nod 2级算法题-1050
- 【贪心+优先队列】1428 活动安排问题【51nod】【难度:2级算法题】
- 51nod 2级算法题-1126
- 51nod 2级算法题-1092
- 51nod 2级算法题-1133
- 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 求总共有多少总跳法,并分析算法的时间复杂度
- 51Nod 独木舟(拉勾专业算法能力测评)
- 51nod 完美字符串(贪心算法基础)
- [状态压缩||折半搜索]51nod 算法马拉松3 A
- 51nod 1785 数据流中的算法 【D(x)与E(x)+队列+线段树】
- 【51nod 算法马拉松19 C】 集合对