导航

poj1852

Posted on 2018-03-11 23:59  Byyyyy  阅读(112)  评论(0)    收藏  举报

题意:

在一根长为L的水平木棍上有一群数量为n的蚂蚁,它们以每秒1cm/s的速度走到木棍一端就会掉下去。现在知道它们的起始位置是距离木根左端点的x处。但是不知道它们爬行的方向。在相向而行的两只蚂蚁相遇后,它们会掉头往反方向走。问所有蚂蚁都落下木棍的最快时间和最慢时间。

思路:

蚂蚁在碰撞前后可以视为相互穿过去,这样其实跟转向其实没有什么区别,因此显然最长距离是初始状态蚂蚁离竿子端点最大距离的一只,最短距离为离竿子一端最近的距离

#include<iostream>
#include<cstdio>
using namespace std;
#define MAXN 100010
int l,n;
int x[MAXN];
int main(){
    int t;
    cin>>t;
    while(t--){
        int minT=0;
        int maxT=0;
        cin>>l>>n;
        for(int i=0;i<n;i++){
            cin>>x[i];
        }
        for(int i=0;i<n;i++){
            minT=max(minT,min(x[i],l-x[i]));
        }
        for(int i=0;i<n;i++){
            maxT=max(maxT,max(x[i],l-x[i]));
        }
        cout<<minT<<" "<<maxT<<endl;
    }
    return 0;
}
View Code