BNU10792:沙漠旅行者

本文介绍了一种计算旅行者在沙漠中从一个补给站到另一个补给站所需的最小水量的算法。通过寻找两个相邻补给站之间的最大距离来确定水袋的最小容量。
有个旅行者计划横穿沙漠,沙漠中水资源很匮乏。旅行者需要依靠补给站的支持,才能横穿整个沙漠。假设所有的补给站都在一条直线上,而且旅行者一定沿着这条直线走。起点在1号补给站,终点在第N号补给站,起点和终点之间有若干个补给站,按照到起点的距离从近到远编号。旅行者有个存储水的袋子,当旅行者走到补给站时,水袋子就能充满。一单位的距离会消耗一个单位的水,现在旅行者想请你帮忙,计算出水袋子最小的容量V,以确保旅行者顺利完成旅途。途中一旦水袋中没有水,而且当前坐标又不是补给站,旅行者就会发生危险。

Input

第一行一个正整数 C  表示一共有多少组数据
对于每一组数据:
第一行一个正整数N,表示补给站的个数(2<=N<=100000)
接下来N个整数表示,从1-N号补给站的坐标X,(X<2000000000)
 

Output

对于每组数据,输出一行为旅行者能顺利到达终点所需要水袋子的最小容量V。
 

Sample Input

1
6
1 2 3 4 5 6
 

Sample Output

1
 
直接找相邻数相差最大的值
 
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
long long a[100005];

int main()
{
    int t,n,i,j;
    long long maxn,r;
    scanf("%d",&t);
    while(t--)
    {
        maxn = 0;
        scanf("%d",&n);
        for(i = 0; i<n; i++)
            scanf("%lld",&a[i]);
        for(i = 1; i<n; i++)
        {
            r = a[i]-a[i-1];
            if(maxn<r)
                maxn = r;
        }
        printf("%lld\n",maxn);
    }

    return 0;
}

转载于:https://www.cnblogs.com/suncoolcat/p/3343356.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值