链接:POJ1852
大意:
一个杆子上的n个蚂蚁在爬,左右两个方向爬直到掉下来,如果两只蚂蚁碰面就会掉头反向走。问全部掉下来的最长和最短时间(因为速度时间,所以可以变成求距离。)
思路:
如果碰面就掉头的话,所走的路程和不掉头穿过彼此是相同的,就当是交换了灵魂继续前进吧。
所以最大时间只要选择左右两种走法和已经算过的最大时间中的最大就好。
最短时间要选择左右两种走法的最短和已经算过的最大时间中的最大(否则满足不了已经算过的蚂蚁)。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,L,x;
scanf("%d%d",&L,&n);
int more=0,less=0;
for(int i=0;i<n;i++)
{
scanf("%d",&x);
more=max(more,max(x,L-x));
less=max(less,min(x,L-x));
}
printf("%d %d\n",less,more);
}
}