poj1852

本文通过分析蚂蚁赛跑问题,提出了一种优化算法,利用蚂蚁的智慧来寻找最短和最长到达终点的时间。该算法避免了传统的暴力穷举方法,提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蚂蚁牙黑蚂蚁牙黑

题目链接:http://poj.org/problem?id=1852

暴力穷举是O(2^n)的复杂度,蚂蚁表示鸭梨很大。

首先,最短时间(mint),蚂蚁们说:“我们要朝着离我们最短的一端走。”

看来蚂蚁的智慧不容小觑,这样一来,既不会发生相遇,也不会有更短的时间走到端点。

其次最长时间(maxt),蚂蚁们又说:“忽略我们的差异。”

也就是说,当两只蚂蚁相遇的时候,可以认为是保持原样交错而过,

因为这样继续前进也不会有任何问题。

蚂蚁又说:“我已经写好了代码。”

#include<cstdio>
#include<algorithm>


using namespace std;


int place[1000010];
int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        for (int i = 0; i < 1000010; i ++)
            place[i] = -1;
        int len, n;
        scanf("%d%d", &len, &n);
        for (int i = 0; i < n; i ++){
            scanf("%d", &place[i]);
        }
        int mint = 0;
        int maxt = 0;
        for (int i = 0; i < n; i ++){
            mint = max(mint, min(place[i], len - place[i]));
            maxt = max(maxt, max(place[i], len - place[i]));
        }
        printf("%d %d\n", mint, maxt);


    }
    return 0;

}


买了一本六级词汇乱序版,我拿起来,又放了下去。

你懂我的意思吧?

最后,另一只蚂蚁说:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值