1934. 贝茜放慢脚步

摘要
Title: 1934. 贝茜放慢脚步
Tag: 二路归并
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

1934. 贝茜放慢脚步

  • 题意

    img

  • 思路

    思路就是二路归并,即归并排序中的归并步骤
    时刻路程点分别排序,组成两个数组,像是归并排序一般,判断这两个数组中的最小值哪个最先拿出,最后拿完两个数组中的值即可

    注意

    • 速度存的是倒数,这样利于更新
    • 有可能结尾不是1000,所以路程点数组要加上结尾
  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    '''
    Author: NEFU AB-IN
    Date: 2022-01-18 12:50:31
    FilePath: \ACM\Acwing\1934.py
    LastEditTime: 2022-02-18 20:18:50
    '''
    a = [] #时间
    b = [] #路程

    if __name__ == "__main__":
    n = int(input())
    for i in range(n):
    op, x = input().split()
    x = int(x)
    if op == 'T':
    a.append(x)
    else:
    b.append(x)
    b.append(1000) #添加终点
    a.sort()
    b.sort()

    t, s, v = 0, 0, 1 #v时速度的倒数
    i, j = 0, 0
    while i < len(a) or j < len(b):
    if j == len(b) or i < len(a) and a[i] - t < (b[j] - s) * v:
    s += (a[i] - t) / v
    t = a[i]
    v += 1
    i += 1
    else:
    t += (b[j] - s) * v
    s = b[j]
    v += 1
    j += 1
    print(round(t))

使用搜索:谷歌必应百度