题目链接POJ No.1852
POJ不支持C++的万能头文件#include <bits/stdc++.h>
问题分析:
1.最短时间:要是时间最短,则所以蚂蚁不会相遇且方向为朝向最近端点的一侧
2.最长时间:如果两只蚂蚁相遇,假设他们交叉走,每只蚂蚁的运动均看作相互独立,最长时间只要求蚂蚁到顶端的距离最大即可
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
#define Max 1000000
int a[Max];
int main()
{
int L,n,i,minT = 0,maxT = 0;
cin >> L >> n;
for(i = 0;i< n;i++)
{
cin >> a[i];
minT = max(minT,min(a[i],L - a[i]));
maxT = max(maxT,max(a[i],L - a[i]));
}
cout << "最短时间:" << minT << endl;
cout << "最长时间:" << maxT << endl;
return 0;
}
测试结果:
时间复杂度:O(n)