链接
传送门
代码
#include<bits/stdc++.h>
using namespace std;const int N=60;
int a[N];
int b[N];int main()
{int t;scanf("%d",&t);while(t--){int n,x;scanf("%d%d",&n,&x);int mx=0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);}for(int i=1;i<=n;i++){b[i]=a[i]-a[i-1];mx=max(b[i],mx);}if((x-a[n])*2>=mx) mx=(x-a[n])*2;printf("%d\n",mx);memset(a,0,sizeof a);memset(b,0,sizeof b);}return 0;
}
总结
1.题目的意思是说,从起点出发,到达点x,然后回到起点,中间有n个加油站,每一次经过加油站可以把油箱里面的油加满,从起点出发的时候油箱里面的油是满的,每走一个单位需要消耗一单位的油,问油箱最小是多少,可以满足要求
2.取所有点之间距离的最大值即可,注意最后一个加油站和x之间的距离要乘以2,需要考虑折返的情况
3.使用数组保存数据的话,每一次循环都要初始化,防止上一次的操作对当前循环造成干扰