zoukankan      html  css  js  c++  java
  • 蚂蚁下桥(思维)

    蚂蚁下桥 
    C时间限制:3000 毫秒 | C内存限制:3000 Kb
    题目内容:
    n只蚂蚁在长为L的桥上爬行,速度是1.  知道每只蚂蚁的初始xi坐标,不知道其朝向。 桥很细,只能容许一只蚂蚁通行,两只蚂蚁碰头后,会各自回头。问所有蚂蚁最早和最迟下桥的时间。
    输入描述
    第一行是桥的长度L和蚂蚁个数n
    随后n行是n只蚂蚁的坐标
    限制: 1<=L,n<=1000000,  0<=xi<=L
    输出描述
    一行输出,最早和最迟的下桥时间
    输入样例
    10 3
    2
    6
    7
    输出样例
    4 8

    这题并不难,主要是那个关键点你要能get到。

    看完这题之后你可能会想两只蚂蚁还能分析的清楚,要是有很多只蚂蚁,不停的碰面回头,一下子就乱了,不知道怎么下手,但事实上换一种思路你会发现其实很简单。

    假如现在有两个蚂蚁向着对方走去,碰头后就各自回头,如果说这两只蚂蚁大小,体型等等一模一样,那你看上去会觉得它们回头了么?

    不,你肯定不会这么觉得,只是认为它们擦肩而过,那我们可以按这种方法去分析,所有蚂蚁都只是擦肩而过,那么现在这题就简单了。

    但是有点地方得注意,题目问的是所有蚂蚁最早下桥的时间,所以求mint时应用max去更新mint

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int len, n;
    int a[1000000];
    int main()
    {
        scanf("%d%d", &len, &n);
        for (int i = 0; i < n; i++)
            scanf("%d", &a[i]);
        int mint = 0, maxt = 0;
        for (int i = 0; i < n; i++) {
            mint = max(mint, min(a[i], len-a[i]));
            maxt = max(maxt, max(a[i], len-a[i])); 
        }
        printf("%d %d", mint, maxt); 
    }
  • 相关阅读:
    06. 如何去掉数组中的重复性数据
    01. 作用域和值类型引用类型的传递
    韩昊 20190919-5 代码规范,结对
    韩昊 20190919-6 四则运算试题生成,结对
    韩昊 20190919-2 功能测试
    韩昊20190912-1 每周例行报告
    将py文件打包为exe文件方法
    关于四个定义的理解
    韩昊 20190912-2 命令行
    韩昊 20190905-1 每周例行报告
  • 原文地址:https://www.cnblogs.com/wizarderror/p/10645668.html
Copyright © 2011-2022 走看看