首页 > 代码库 > 加强赛(二)E - Ants POJ - 1852

加强赛(二)E - Ants POJ - 1852

感谢我的学长对我的带领;该题思想来源于WArobot;

 

输入数据:

N(N组测试数据)

L (绳长)n(蚂蚁的个数)

接下来是n个数据(n个蚂蚁每个在绳子上距离绳子最左端的距离l)

该题给出每个蚂蚁的速度均为1cm/s,所以该问题无需考虑;

输出:

蚂蚁的最短掉落时间和最长的掉落时间;

 

掉落的最短时间:

找出每一只蚂蚁离最左端的距离和离最右端的距离的最小值再将这些数据比较,找出最大的,因为掉落的最短时间取决于最后一个掉落的蚂蚁的时间;

 

掉落的最长时间:

其实条件中的两只蚂蚁相遇往回反的条件可以忽略,只需找出每一只蚂蚁离最左端的距离和离最右端的距离的最大值再将这些数据比较,找出最大的;

代码如下:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;

const int M=1e6+10;
int s[M];

int main(){
int t,L,n,s_max,s_min;
cin>>t;
while(t--){
scanf("%d%d",&L,&n);
s_min=s_max=-M;
for(int i=0;i<n;i++){
scanf("%d",&s[i]);
s_min=max(s_min,min(s[i],L-s[i]));
s_max=max(s_max,max(s[i],L-s[i]));
}
printf("%d %d\n",s_min,s_max);
}
return 0;
}

加强赛(二)E - Ants POJ - 1852