首页 > 代码库 > 2017.5 校内预选赛 第三题 ants poj1852
2017.5 校内预选赛 第三题 ants poj1852
题目:
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,开不了这么大的数组。
2017.5 校内预选赛 第三题 ants poj1852
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。