您的位置:首页 > 其它

poj1852 Ants

2011-09-05 22:17 344 查看
说一个长度为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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: