老规矩,先看题目描述:
小埋最近想要出去旅游,选择了一个旅游地点,中间会经过一些加油站相当于放到一条直线公路上。
小埋有一辆车,1公里消耗 1升油。我们出发地点是在 0 这个位置,并且油箱是满的。
然后要路过 n 个加油站,分别是 1,2,…,a1,a2,…,an,我们会在加油站把油加满,然后我们到达 x 景点后再原路返回。我们初始出发时油箱的最小体积是多少。
路程顺序是我们从 0 ~ x 点,然后再从 x ~ 0 点返回回来。
这里有一个很重要的点,就是x点没有加油站。所以说最后的一个线是要把距离×2的。
那么可以先假设油箱是0,每次如果距离大于了已有油箱,那么就把油箱设置为现在的距离就可以了。最后比较的是油箱和两倍的(最后的加油站和终点的距离)。上代码。
#include <bits/stdc++.h>
using namespace std;
int n,t,x,a[55];
int main()
{
cin>>t;
while(t--){
cin>>n>>x;
int flag=0,res=0;
for(int i=1;i<=n;i++){
cin>>a[i];
if(res>=(a[i]-flag)){
flag=a[i];
}
else{
res=a[i]-flag;
flag=a[i];
}
}
if(res<(x-flag)*2){
res=(x-flag)*2;
}
cout<<res<<endl;
}
return 0;
}
我也不知道该说什么,flag是用来纪录现在的车子的位置,莫得了。
拜拜。