POJ No.1852 Ants

思路分析

“转向”问题

假设蚂蚁A与蚂蚁B相遇后转向,可以视作A,B交换位置,从而消除转向。

POJ No.1852 Ants_第1张图片

距离问题

最长距离:比较每只蚂蚁距两端的最大距离,取两端中最大值,取一组中最长距离的最大值。

最短距离:比较每只蚂蚁距两段的最小距离,取两端中最小值,取一组中最短距离的最大值。

参考代码

#include
#include
using namespace std;
int main() {
	int N;
	cin >> N;
	int len, n;
	vector ans1(N, 0), ans2(N, 0);//用于存储答案
	int index = 0;
	while (N--) {
		cin >> len >> n;
		int tmpmax = 0, tmpmin = 0;//每一组都要重置
		for (int i = 0; i < n; ++i) {
			int tmp;
			cin >> tmp;
			tmpmax = max(max(len - tmp, tmp), tmpmax);//取一组中最大的距两端较远的距离
			tmpmin = max(min(len - tmp, tmp), tmpmin);//取一组中最大的距两端较近的距离
		}
		ans1[index] = tmpmin;
		ans2[index] = tmpmax;
		index++;
	}
	for (int i = 0; i < ans1.size(); ++i) {
		cout << ans1[i] << " " << ans2[i] << endl;
	}
	return 0;
}

你可能感兴趣的:(算法,c++,数据结构,POJ)