CF 1901A Line Trip 学习笔记

链接

传送门

代码

#include
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.使用数组保存数据的话,每一次循环都要初始化,防止上一次的操作对当前循环造成干扰

 

你可能感兴趣的:(Codeforces,学习,笔记)