我们首先考虑只有一个人的情况,呢么他下桥的方式只有两种
- 向起点走,时间为 x (x是当前人的位置)
- 向终点走,时间为 L+1-x
显然对于这种情况下我们只要对这两种方案取\(min\)和\(max\)就是最小时间和最大时间
好的,我们考虑两个人的情况
如果两人同向运动,因为速度相同也就不可能相遇且间距保持不变。初中物理
再说相向运动,记住你自己并不在桥上,你在桥下。假如你知道了敌军的轰炸所以你提前跑的了离桥很远的地方用望远镜来看。你只能看到两个绿点在运动。但他们相遇时,然后又快速的转身离开了,因为转身不耗时间,呢么你看的就是两个绿点重合后又继续移动,或者说一个人代替另一个人继续行走。
哔哔了一大堆,说白了就是两人相遇没有影响所以正常处理就好了。
即最短时间就是所有人都按照自己最短的路径下桥,最后一个下桥的人所用的时间
最长时间就是所有人都按照自己最长的路径下桥,最后一个下桥的人所用的时间
coding
扫描二维码关注公众号,回复:
7499702 查看本文章
#include <bits/stdc++.h>
using namespace std;
int l,n,maxt = 0,mint = 0,num;
inline int read()
{
register int x = 0;
register char ch = getchar();
while(ch < '0' || ch > '9') ch = getchar();
while(ch >= '0' &&ch <= '9')
{
x = (x<<3)+(x<<1) + ch-'0';
ch = getchar();
}
return x;
}
int main()
{
l = read()+1; n = read();
while(n--)
{
num = read();
mint = max(mint,min(num,l-num));
maxt = max(maxt,max(num,l-num));
}
printf("%d %d\n",mint,maxt);
return 0;
}