1904. 奶牛慢跑

摘要
Title: 1904. 奶牛慢跑
Tag: 思维
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

1904. 奶牛慢跑

  • 题意

    奶牛们又出去锻炼蹄子去了!
    有 N 头奶牛在无限长的单行道上慢跑,且跑步方向为坐标值增大的方向。
    每头奶牛在跑道上开始奔跑的位置互不相同,一些奶牛的奔跑速度可能相同,也可能不同。
    由于跑道是单行道,十分狭窄,奶牛们无法相互超越。
    当一头速度很快的牛追上另一头牛时,她必须减速至与另一头牛速度相同以免发生碰撞,并成为同一跑步小组的一员。此时,两头牛可以视为在同一点上。
    最终,再也没有奶牛会撞到(追上)其他奶牛了。
    约翰想知道在这种情况下,会剩下多少个跑步小组。

  • 思路

    最终追尾成一个点的牛,必然是一个连续的段
    求区间数 = 求每个区间的队长数(最右边的牛) = 判断每个牛是不是队长 = 判断这个牛会不会不追尾右边的牛 = 判断这个牛的速度是不是小于等于右边所有牛速度的最小值

  • 代码

    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
    '''
    Author: NEFU AB-IN
    Date: 2022-01-22 19:50:29
    FilePath: \ACM\Acwing\1904.py
    LastEditTime: 2022-01-22 21:02:32
    '''
    '''
    最终追尾成一个点的牛,必然是一个连续的段
    求区间数 = 求每个区间的队长数(最右边的牛) = 判断每个牛是不是队长 = 判断这个牛会不会$不追尾$右边的牛 = 判断这个牛的速度是不是小于等于右边所有牛速度的最小值
    '''

    lst = []
    INF = int(2e9)

    if __name__ == "__main__":
    n = int(input())

    for _ in range(n):
    x, v = map(int, input().split())
    lst.append(v)
    vmin = INF
    res = 0
    for i in range(n - 1, -1, -1):
    if lst[i] <= vmin:
    res += 1
    vmin = lst[i]
    print(res)

使用搜索:谷歌必应百度