标签:problem img poj nbsp stream div ant for 点子
题目:
http://poj.org/problem?id=1852
只要想到点子上,很简单。
以第一个栗子来解释:
10 3
2 6 7
按照题意 A B 相遇则A B 改变方向,其实可以看作A和B相遇穿过继续运动。
这样就最短时间 只要找到每个蚂蚁到一端的最短时间,然后找出其中的最大值
例如最短时间分别对应 2 4 3
所以结果为4
最长时间 就只要找出每个点的最长时间然后取最大值
代码如下(能够ac):
#include<iostream> using namespace std; int main(){ int t; cin>>t; for(int i=1;i<=t;i++){ int n,m; cin>>n>>m; int small=0,max=0; for(int j=0;j<m;j++){ int num; cin>>num; int temp; temp=n-num>num ? num : n-num; if(small<temp) small=temp; temp=num>n-num ? num : n-num; if(max<temp) max=temp; } cout<<small<<" "<<max<<endl; } }
注意不要使用数组保存每个蚂蚁的位置,因为m最大为1000000,开不了这么大的数组。
标签:problem img poj nbsp stream div ant for 点子
原文地址:http://www.cnblogs.com/kapike/p/6915295.html