独木桥
已知条件
- 独木桥的长度为1
- 士兵的速度为1
- 如果一个士兵在某一个时刻来到了0或L+1,那么他就离开了独木桥
附加条件
- 匀速朝着这个方向走
- 中途不会改变自己的方向
- 如果面对面相遇的时候,他们是无法通过对方
- 于是会分别转身,继续行走
- 转身不需要任何的时间
解题关键
- 可以把所有的士兵看做无差别的士兵
- 当他们相遇的时候,一定是转身
- 那么我们可以把他们看成穿过彼此的身体
- 于是,一每个士兵都只有两项选择
- 向右走
- 向左走
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int L;
int N;
int temp;
cin>>L;
cin>>N;
int maxv=0;
int minv=0;
for(int i=0;i<N;i++){
cin>>temp;
// 当前士兵的需要最长时间过桥
maxv=max(maxv,max(temp,L-temp+1));
// 当前士兵最短的过桥时间
minv=max(minv,min(L-temp+1,temp));
}
cout<<minv<<" "<<maxv;
return 0;
}