[luogu-1007]独木桥 题解

来源:互联网 发布:魔兽争霸mac版百度云 编辑:程序博客网 时间:2024/05/17 06:56

题目传送门
题目给了一个数轴,数轴上有一些点会向两边中的任意一个方向运动,问出数轴的最小和最大的时间。
题目中说,两个点相遇便会掉头走,但是我们可以这样认为,因为两个点的速度是一样的,所以如果两个点相互遇到的话,我们可以将它当做互相不理睬直接穿过对方,那么这题他答案也就出来了,在向左和向右中选择最大/最小的时间。
代码:

#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define rep(i,a,n) for (int i=a;i<=n;i++)#define per(i,a,n) for (int i=a;i>=n;i--)#define Clear(a,x) memset(a,x,sizeof(a))#define ll long long#define INF 2000000000#define eps 1e-8using namespace std;int read(){    int x=0,f=1;     char ch=getchar();      while (ch<'0'||ch>'9') f=ch=='-'?-1:f,ch=getchar();    while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();    return x*f;}const int maxn=5005;int L,n;int x[maxn];int main(){    L=read();    n=read();    rep(i,1,n) x[i]=read();    int Min=0,Max=0;    rep(i,1,n){        Min=max(Min,min(x[i],L-x[i]+1));        Max=max(Max,max(x[i],L-x[i]+1));    }    printf("%d %d\n",Min,Max);    return 0;}