zoukankan      html  css  js  c++  java
  • NYOJ

    爬行的蚂蚁

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:2
     
    描述
    有N只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离杆子左端的距离Xi,但不知道它当前的朝向。请计算所有蚂蚁都从竿子上掉落所需的最短时间和最长时间。
     
    输入
    多组测试数据。
    每组数据包含两行,第一行包含2个整数N、L。(1≤N,L≤10^6)。
    接下来一行有N个整数Xi(0≤Xi≤L),Xi表示第i只蚂蚁距离竿子左端点的距离。
    输出
    每组数据输出两行,格式见样例。每两组数据之间输出一个换行。
    样例输入
    3 10 
    2 6 7
    6 100 
    25 20 50 38 42 15
    样例输出
    The minimum time is: 4
    The maximum time is: 8
    
    The minimum time is: 50
    The maximum time is: 85

    解题关键:

    maxT=max(maxT,max(d[i],L-d[i]));//寻找较大距离的最大为最长时间
    minT=max(minT,min(d[i],L-d[i])); //寻找较小距离的最大为最短时间

    (注意忽略掉蚂蚁的不同,不考虑相撞转向行为)

    #include<iostream>
    #include<algorithm>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    const int N = 1001000;
    int a[N];
    int main(){
    int n,l,Min,Max;
    while(cin>>n>>l){
    memset(a,0,sizeof(a));
    Min=Max=0;
    for(int i=0;i<n;i++)
    scanf("%d",&a[i]);
    // cin>>a[i];
    for(int i=0;i<n;i++){//忽略所有的蚂蚁的差别,然后就直接每次都找最值就可以了............
    Max=max(Max,max(l-a[i],a[i]));//其实相碰后是定一只蚂蚁将这只蚂蚁剩下的路程走了
    Min=max(Min,min(l-a[i],a[i]));
    }
    printf("The minimum time is: %d The maximum time is: %d ",Min,Max);
    // cout<<"The minimum time is: "<<Min<<endl<<"The maximum time is: "<<Max<<endl<<endl;
    }
    }

  • 相关阅读:
    2014-12-28 iframe,style,body style
    2014-12-25 网页基础,html。
    2014-12-19 特殊集合:stack、queue、Hashtable
    2014-12-18 集合
    2014-12-16 多维数组
    2014-12-15 数组
    2014-12-14 跳转语句,while循环,各种类的用法
    combobox DataGridView
    面向对象(重载、封装、继承、抽象)
    winform
  • 原文地址:https://www.cnblogs.com/dream-it-possible/p/6582204.html
Copyright © 2011-2022 走看看