poj1852 Ants

说一个长度为m的杆,上面有n个蚂蚁,告诉每个蚂蚁的初始位置,每个蚂蚁速度都是一样的,问所有的蚂蚁离开杆的最短和最长时间是多少。

模拟题,所有的蚂蚁看成一样的,可以这样理解,即使相撞按反方向走,但是两只蚂蚁从开始爬到相撞到继续相背爬,这个时间都是一样的。所以直接对每只蚂蚁分别处理,得出他的最短离开时间和最长离开时间,我们分别从最短离开时间和最长离开时间里面求出最大的。

源码:

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    int m,n,l,pos,left,right,curMin,curMax,rsMin,rsMax;
    scanf("%d",&m);
    while(m-->0)
    {
        scanf("%d%d",&l,&n);
        rsMin=-1;
        rsMax=-1;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&pos);
            left=pos;
            right=l-pos;
            curMin=left<=right?left:right;
            curMax=(curMin==left)?right:left;
            if(curMin>rsMin)
                rsMin=curMin;
            if(curMax>rsMax)
                rsMax=curMax;
        }
        printf("%d %d\n",rsMin,rsMax);
    }
    return 0;
}

posted on 2011-09-05 22:17  buptLizer  阅读(860)  评论(0编辑  收藏  举报

导航