POJ 1852 Ants 思维

题目链接 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<<'\n'; 
    } 
}
posted @ 2020-04-15 07:01  An_Fly  阅读(110)  评论(0编辑  收藏  举报