1762. 牛的洗牌

摘要
Title: 1762. 牛的洗牌
Tag: 模拟
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

1762. 牛的洗牌

  • 题意

    农夫约翰坚信快乐的奶牛会产出更多的牛奶,因此他在谷仓中安装了一个巨大的迪斯科球,并计划教他的奶牛跳舞!
    在查阅了一些牛的流行舞蹈后,约翰决定教他的奶牛“洗牌舞”。
    洗牌舞是由他的 N 只奶牛按一定顺序排成一行,然后连续执行三次“洗牌”,每次“洗牌”都可能会使奶牛重新排序。
    为了让奶牛们更容易找到自己所处的位置,约翰用数字 1∼N 对一行中奶牛所在的位置进行了标记,一行中第一头奶牛处于位置 1,第二头奶牛处于位置 2,以此类推,直到位置 N。
    每次“洗牌”用 N 个数字 a1,a2,…,aN 来描述,处于位置 i 的奶牛在一次“洗牌”过后,需要移动至位置 ai(因此,每个 ai 在 1…N 范围内)。
    幸运的是,所有 ai 都是互不相同的,因此,不会存在多头奶牛在洗牌结束后移动到同一个位置的情况。
    约翰的每头奶牛都有一个属于自己的唯一 7 位整数 ID (不含前导 0)。
    给定你三轮“洗牌”过后的奶牛排列顺序,请你求出奶牛们的初始排列顺序。

  • 思路

    反着模拟即可

  • 代码

    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
    '''
    Author: NEFU AB-IN
    Date: 2022-02-07 17:56:46
    FilePath: \ACM\Acwing\1762.py
    LastEditTime: 2022-02-08 01:04:32
    '''
    from copy import deepcopy

    N = 105
    a = [] #标准
    b = [] #序列
    c = [0 for _ in range(N)] #反标准

    if __name__ == "__main__":
    n = int(input())
    a = list(map(int, input().split()))
    b = list(input().split())

    #反映射
    for i in range(n):
    c[a[i] - 1] = i

    for i in range(3):
    t = deepcopy(b) #新序列
    for j in range(n):
    t[c[j]] = b[j]
    b = deepcopy(t)

    for i in range(n):
    print(b[i])
使用搜索:谷歌必应百度