原题传送门

描述

一群蚂蚁走在长度为l cm的水平细杆上,以1cm/s的匀速。当一只行走的蚂蚁到达杆的一端,它就会掉下去。当两只蚂蚁相遇,它们会掉头像反方向走去。我们知道一只蚂蚁在杆上的初始位置,然而,我们不知道蚂蚁在像哪一个方向走。你的任务是计算所有蚂蚁从杆上掉下所需的最早和最晚的时间。

思路

1.如果每只蚂蚁都向近的那一端走,蚂蚁一定不会相遇,最后一只蚂蚁到达端点所用的时间即为最短时间。

证明:取中点q.根据以上原则,在q左边的蚂蚁会向左爬,在q右边的蚂蚁会像右爬。因此任意两只蚂蚁不会相遇。又由于每只蚂蚁都向较近的的那一端爬,对于每只蚂蚁,爬到端点的时间最短。因此,最后一只到达端点的蚂蚁所用时间即为最短总时间。即t_min=max=(t_min,min(x[i],L-x[i]))

2.对于最大时间,

表面上看,蚂蚁相遇次数越多越好,因为这样蚂蚁就会不断在杆上往返,增加总的时间。那么,有没有一个时间上限呢?

考虑两只蚂蚁相遇的情况,如果把每只蚂蚁看作完全一样毫无差别的,那么,蚂蚁的相遇也可以看作如下图所示的情况:

因此,最大时间是所有蚂蚁到最远端所用时间中最大的那一个时间,及t_max=max(t_max,max(x[i],L-x[i]))

代码

 1 #include<iostream>
2 #include<stdio.h>
3 #include<algorithm>
4
5 using namespace std;
6
7 int anti[1000003];
8
9 int main()
10 {
11 int cas;
12 cin >> cas;
13 while (cas--)
14 {
15 int L, n;
16 cin >> L >> n;
17
18 for (int i = 0; i < n; i++)
19 //cin >> anti[i];
20 scanf("%d", &anti[i]);
21
22
23 int t_max=0,t_min=0;
24 for (int i = 0; i < n; i++)
25 {
26 t_max = max(t_max,max(anti[i],L - anti[i]) );
27 t_min = max(t_min,min(anti[i],L - anti[i]) );
28 }
29
30 cout << t_min << " " << t_max << endl;
31 }
32 return 0;
33 }

poj_1852_Ants(复杂问题简单化)的更多相关文章

  1. vuex简单化理解和安装使用

     1.简单化理解 首先你要明白 vuex 的目的 就是为了 集中化的管理项目中 组件所有的 数据状态 (state) 0. 第一步你要明白 , store 的重要性 , store 类似一个中央基站, ...

  2. Linux更改密码报错:密码未通过字典检查 - 过于简单化/系统化

    Linux更改密码报错:密码未通过字典检查 - 过于简单化/系统化 方案一:直接忽略 很容易认为这儿是一个错误,其实可以直接忽略,重新输入密码 [root@localhost ~]# passwd 更 ...

  3. 如何在SimpleNVR用Excel表格将通道配置简单化

    进入本世纪的第三个十年,流媒体们"绞尽脑汁",依靠技术不断提升用户的体验感.熟悉SimpleNVR的用户都知道,目前SimpleNVR已实现对接自有流媒体服务器平台,不限制观看人数 ...

  4. 使用TextUtils.isEmpty简单化代码

    如果让你判断一个文本框是否为空(null)或者没有任何值(length=0),你会怎么怎样去写代码,很多初学者可能会这样写: if(text==null || text.length==0) {... ...

  5. 让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】

    JAVA的时间日期处理一直是一个比较复杂的问题,大多数程序员都不能很轻松的来处理这些问题.首先Java中关于时间的类,从 JDK 1.1 开始,Date的作用很有限,相应的功能已由Calendar与D ...

  6. OpenMP多线程linux下的使用,简单化

    http://hi.baidu.com/diwulechao/item/bc6d865c411b813c32e0a932 http://www.cnblogs.com/yangyangcv/archi ...

  7. MySql Outer Join 简单化

    查询from语句中的Outer Join可以在多种情况下被简化: 在解析阶段,右外连接操作可以被转变为等下ode值包含left join的操作,在一般情况下,转变: (T1, ...) RIGHT J ...

  8. python - 简单化list的 For[if] 语句

    python的list数据 >>>a=[, , , , , , ] >>>b=a >>>b [, , , , , , ] 用这种方式将a.list ...

  9. map/reduce+lambda让程序简单化

    map()函数 map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. 也就是  map(f,[x,x,x, ...

随机推荐

  1. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  2. 携程applo配置

    1.官网文档 https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C% ...

  3. Django的ORM补充

    Django的ORM补充 参考文档:https://www.cnblogs.com/wupeiqi/articles/6216618.html 1.查询性能补充 1.1 select_related ...

  4. ARP攻击的发现、攻击原理、攻击方式、防护,竟然这么简单?!

    ARP协议概述 ARP协议(address resolution protocol)地址解析协议. 一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址, ...

  5. QQ聊天记录快速迁移

    QQ聊天记录快速迁移 在工作中大家经常会用到QQ来沟通,但是很多时候在其它设备上登录QQ就无法查看到之前的聊天记录和图片,这是因为电脑上的QQ聊天记录一般都是保存在电脑本地硬盘里,所以我们在换设备登录 ...

  6. Netty学习(四)FastThreadLocal

    FastThreadLocal 前面介绍过 JDK 的 ThreadLocal , 使用不当的话容易造成内存泄漏最终导致OOM, 并且也有一些地方设计的不够好(相对于接下来要介绍的 FastThrea ...

  7. vue2.x结合echarts2实现显示具体省份热力图

    最近研究了一下VUE2.X结合ehcarts实现热力图,先看下最终: 效果话不多说,直接上代码: 1 <!DOCTYPE html> 2 <html> 3 <head&g ...

  8. os模块——关于在程序框中如何进行文件的查找和建立新的文件夹

  9. options has an unknown property 'modifyVars'. These properties are valid: 处理方法

    webpack 编译时提示 ValidationError: Invalid options object. Less Loader has been initialized using an opt ...

  10. Colbalt Strike之CHM木马

    一.命令执行(calc)木马生成 1.生成木马 首先创建一个根目录,文件名为exp 在文件夹里创建两个目录和一个index.html文件 在两个目录里分别创建txt文件或html文件 index.ht ...