解题报告:POJ1852 Ants

版权声明:个人笔记,仅供复习 https://blog.csdn.net/weixin_41162823/article/details/82180242

原题链接:POJ1852

解析:本题需要自己建立模型,思考算法。本题要求最后一只蚂蚁掉落的最小时间和最大时间,如果两只蚂蚁相遇,他们会掉头,但是我们可以将它们看作没有相遇。因为a遇到b后掉头,把a看作b,b看作a,就相当于b继续走,a也继续走,只是两只蚂蚁交换了而已,而我们不区别蚂蚁个体。

错误报告:

  • 在求最大时间的时候,我一直在纠结于一只蚂蚁的行进路线,即它们相遇后回头,再相遇再回头。。。这样根本无从下口
  • 最后一只蚂蚁掉落的最短时间,是所有蚂蚁掉落最短时间中的最大时间
  • 用cin会超时,scanf则可以通过,可见像这种大数据还是尽量用scanf,甚至自写read函数

代码示例:

#include<iostream>
#include<cstdio>
using namespace std;
const int inf = 2e9;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--){
		int len,n;
		scanf("%d%d",&len,&n);
		int maxTime = -inf,minTime = -inf;
		for(int i = 0;i < n;i++){
			int p;
			scanf("%d",&p);
			maxTime = max(maxTime,max(p,len-p));
			minTime = max(minTime,min(p,len-p));
		}
		printf("%d %d\n",minTime,maxTime);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_41162823/article/details/82180242