POJ 1852 Ants

题目意思:让以控制蚂蚁行动方向,来计算所有蚂蚁都掉下去所需的时间。注意不能用暴搜,方向2*2*2*2*2*2*……,2^n会超时。要优化!

  以为蚂蚁碰头后会再向回走,所以我们可以考虑忽略蚂蚁的碰头回走,让蚂蚁直接穿越对方,对题目无影响。

  代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int a[1000005];
void Solve(int length,int n);
int main()
{
    int t,length,n;
    cin>>t;
    while(t--)
    {
        cin>>length>>n;
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
            Solve(length,n);
    }
    return 0;
}
void Solve(int length,int n)
{
    int minn=0,maxn=0;
    for(int i=0;i<n;i++)
    {//通过控制方向,即到起点和到中点的远近
        minn=max(minn,min(a[i],length-a[i]));//计算最短时间
        maxn=max(maxn,max(a[i],length-a[i]));//计算最长时间
    }
    cout<<minn<<' '<<maxn<<endl;
}



你可能感兴趣的:(优化,poj,ants)