POJ-1852

来源:互联网 发布:电纸书推荐 知乎 编辑:程序博客网 时间:2024/05/17 01:14

其实如果之前没有遇到过这种问题就是感到无从下手,本题实际不难。


模拟两只蚂蚁相遇的情景,就会发现其实他们是“保持原样交错而过继续前进”(如果不考虑蚂蚁的个体差异),这样就可以认为每只蚂蚁是独立运动的。由于没有给出蚂蚁的朝向问题,所以要求最短时间时:首先针对每只蚂蚁求出它到竿子两个端点的最小距离,然后从所有蚂蚁的最小距离中求出最大的值(因为需要的是当所有的蚂蚁都下落的最小时间);要求最长时间时:首先针对每只蚂蚁求出它到竿子的两个端点的最大距离,然后从所有蚂蚁的最大距离中求出最大值。


#include<iostream>#define MAX 1000000using namespace std;int main(){    int T, l, n, temp;    cin>>T;    while(T--){        cin>>l>>n;//l表示竿子的长度,n表示蚂蚁的数量        int lower = -1; int high = -1;//首先将最小时间和最大时间都进行初始化        for(int i = 0; i < n; i++){            cin>>temp;            lower = max(lower, min(temp, l-temp));//首先求出每只蚂蚁的最短时间,在这个基础上再求出其中最大的那个值            high = max(high, max(temp, l-temp));//首先求出每只蚂蚁的最长时间,在这个基础上再求出其中最大的那个值        }        cout<<lower<<' '<<high<<endl;    }    return 0;}


0 0
原创粉丝点击