题目链接 http://poj.org/problem?id=1852
分析
我个人感觉最小的那个挺好算的,就每个人都各自朝离自己最近的那端去走 跳崖 呗,主要是最大的,当时卡了我一小会儿,第二个样例挺不好模拟的,蚂蚁太多了,看第一个样例叭。我用长度不同的线段来区分下每个蚂蚁,我不会画蚂蚁
这是刚开始,求最小的时候就这样。
关键是,求最大的时候是什么样子。根据经验,它肯定是碰撞之后才会取得最大,所以让6,7和2去对碰。
2和6对碰
对碰完就没2啥事了,2就可以往后走了。
然后6再和7对碰,你会发现这么画的话的确应该是最大,但好像看不出啥规律来。
这是因为犯了一个小错误,既然每只蚂蚁都是一样的,还区分它干嘛??
于是第一次碰撞
然后碰撞完
?????????????????因为我没标号所以你也看不出来哪只是哪只,不过这并不影响最终结果,所以由上述两张图可以清晰看出,碰撞是没啥用的,除了骗着你玩。。。。所以最大的那个就是距离最远的蚂蚁走的路程。
#include<iostream>
using namespace std;
int main(){
ios::sync_with_stdio(false);
int t; cin>>t;
while(t--){
int l,n,Max=0,Min=0; cin>>l>>n; int mid=1;
for(int i=1;i<=n;i++){
int a; cin>>a;
Max=max(max(a,l-a),Max); Min=max(min(a,l-a),Min);
}
cout<<Min<<" "<<Max<<'
';
}
}