列表

详情


NC14523. 求最大值

描述

给出一个序列,你的任务是求序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值

输入描述

本题包含多组输入,每组输入第一行一个数字n,表示序列的长度。
然后接下来一行输入n个数,表示原先序列的样子。
数据范围:
3<=n<=200000
-1000000000<=a[i]<=1000000000

输出描述

每组数据输出一行一个浮点数,保留两位小数,表示所求的最大值。

示例1

输入:

5
2 4 6 8 10

输出:

2.00

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 192ms, 内存消耗: 4324K, 提交时间: 2018-05-29 21:51:19

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
long long int a,b;
float Max=-999999999 ;
cin>>a ;
for(int i=1;i<n;i++)
{cin>>b ;
float n=(b-a);
Max=max(n,Max) ;
a=b ;
}
printf("%.2f\n" ,Max);
}
return 0;
}

Python3 解法, 执行用时: 467ms, 内存消耗: 25380K, 提交时间: 2022-11-25 15:22:07

while True:
    try:
        n = int(input())
        lst = [int(i) for i in input().split()]
        res = -10000000
        for j in range(1,n):
            res = max(res,(lst[j]-lst[j-1]))

        print("%.2f"%res)
    except:
        break

C++14(g++5.4) 解法, 执行用时: 482ms, 内存消耗: 4244K, 提交时间: 2019-12-13 22:40:12

#include<bits/stdc++.h>
using namespace std;
int main(){
     double n,a,b;
     while(cin>>n>>a){ double ans=-1e9-5; for(int i=1;i<n;i++){
         cin>>b;  ans=max(ans,b-a); a=b;}
         printf("%.2lf\n",ans);
     }
}

上一题