Luogu P1007 独木桥

P1007 独木桥

P1007 独木桥 - 洛谷 _ 计算机科学教育新生态.png

我们首先考虑只有一个人的情况,呢么他下桥的方式只有两种

  1. 向起点走,时间为 x (x是当前人的位置)
  2. 向终点走,时间为 L+1-x

显然对于这种情况下我们只要对这两种方案取\(min\)\(max\)就是最小时间和最大时间

好的,我们考虑两个人的情况

如果两人同向运动,因为速度相同也就不可能相遇且间距保持不变。初中物理

再说相向运动,记住你自己并不在桥上,你在桥下。假如你知道了敌军的轰炸所以你提前跑的了离桥很远的地方用望远镜来看。你只能看到两个绿点在运动。但他们相遇时,然后又快速的转身离开了,因为转身不耗时间,呢么你看的就是两个绿点重合后又继续移动,或者说一个人代替另一个人继续行走。

哔哔了一大堆,说白了就是两人相遇没有影响所以正常处理就好了。

即最短时间就是所有人都按照自己最短的路径下桥,最后一个下桥的人所用的时间

最长时间就是所有人都按照自己最长的路径下桥,最后一个下桥的人所用的时间

coding

#include <bits/stdc++.h>
using namespace std;


int l,n,maxt = 0,mint = 0,num;


inline int read()
{
    register int x = 0;
    register char ch = getchar();
    while(ch < '0' || ch > '9') ch = getchar();
    while(ch >= '0' &&ch <= '9')
    {
        x = (x<<3)+(x<<1) + ch-'0';
        ch = getchar();
    }
    return x;
}


int main()
{
    l = read()+1; n = read();
    while(n--)
    {
        num = read();
        mint = max(mint,min(num,l-num));
        maxt = max(maxt,max(num,l-num));
    }
    printf("%d %d\n",mint,maxt);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Mark-X/p/11699516.html