• UVa 10714


      题目大意:有一个长度为lcm的木棍,上面有n只蚂蚁,以1cm/s的速度爬行,当两只蚂蚁相撞时两只蚂蚁各自掉头,蚂蚁走到两端时掉下去。不知道开始时每只蚂蚁各自的朝向,求全部蚂蚁都掉下去的可能最早时间和最晚时间。

      这个和UVa 10881 Piotr's Ants算是一个模型,不过这个简单一点,关键是从整体上看,蚂蚁“相撞掉头”和“擦肩而过”没有区别,在计算蚂蚁位置方面是等价的。所以,最早时间就是离中间最近的蚂蚁走到离它最近的一端的时间,最晚就是两端的蚂蚁走到离它更远的那一端的时间的较大者。

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <cmath>
     4 using namespace std;
     5 #define MAXN 1000000+10
     6 
     7 int ant[MAXN];
     8 
     9 int main()
    10 {
    11 #ifdef LOCAL
    12     freopen("in", "r", stdin);
    13 #endif
    14     int N;
    15     scanf("%d", &N);
    16     while (N--)
    17     {
    18         int l, n;
    19         scanf("%d%d", &l, &n);
    20         for (int i = 0; i < n; i++)
    21             scanf("%d", &ant[i]);
    22         sort(ant, ant+n);
    23         int latest = max (l-ant[0], ant[n-1]);
    24         double mid = 1.0 * l / 2;
    25         double lmin = fabs(ant[0]-mid);;  // lmin save the nearest distance from the half of the pole
    26         int p = 0;
    27         for (int i = 1; i < n; i++)
    28             if (fabs(ant[i]-mid) < lmin)
    29             {
    30                 lmin = fabs(ant[i]-mid);
    31                 p = i;
    32             }
    33         int earliest = min(ant[p], l-ant[p]);
    34         printf("%d %d
    ", earliest, latest);
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    P1064 金明的预算方案
    P1062 数列
    P2258 子矩阵
    P1095 守望者的逃离
    P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers
    P1203 [USACO1.1]坏掉的项链Broken Necklace
    P1478 陶陶摘苹果(升级版)
    P2485 [SDOI2011]计算器
    逆元模板
    CloudStack 物理网络架构
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3205136.html
Copyright © 2020-2023  润新知