zoukankan      html  css  js  c++  java
  • poj 1852 Ants

    题目大意:在一根极细的杆子上,有许多蚂蚁在爬,他们爬的方向未知(有可能是右边,也有可能是左边)。若碰到杆子的两端他们便会掉落。如果他们相遇,由于杆子太细,他们不能越过对方过去,只能掉头回去。问所有蚂蚁掉落杆子所需的最短时间与最长时间。

    分析:由于这题数据很大,搜索肯定会超时。换一种思路,如果他们都是同方向,那么久不存在最短时间。所以,当他们相遇时,他们之前所用时间相同,相遇的位置是同一点。之后的掉头可看成是两只蚂蚁交错(即越过对方),效果是一样的。这样只需查找每只蚂蚁到杆子两端的最长时间与最短时间便可。

    #include<iostream>
    #include<stdio.h>
    #include<math.h>
    #define INT 0x3f3f3f3f
    using namespace std;
    
    int main(){
        int t;
        cin>>t;
        while(t--){
            int l,n;
            scanf("%d %d",&l,&n);
            int a[100000];
            int mint=0;
            for(int i=0;i<n;i++){
                scanf("%d",&a[i]);
                mint=max(mint,min(a[i],l-a[i]));
            }
            int maxt=0;
            for(int i=0;i<n;i++){
                maxt=max(maxt,max(a[i],l-a[i]));
            }
            printf("%d %d\n",mint,maxt);
        }
    }

    poj-problem01

  • 相关阅读:
    CMake学习笔记
    右键添加"在此处打开命令窗口"菜单
    设置默认python模块源
    添加到附加组
    Unity宏处理
    挂载windows共享文件夹
    MacOS长按无效问题
    中文Locale
    笔记本用作无线路由器
    C# Winfrom iTextSharp 导出pdf 带二维码 表格嵌套 简单Dome
  • 原文地址:https://www.cnblogs.com/xyfs99/p/10645452.html
Copyright © 2011-2022 走看看