1. 问题描述:

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

输入格式

第一行包含整数 N。第二行包含 N 个整数,表示 a1,a2,…,aN。第三行包含了 N 头奶牛三轮“洗牌”过后的排列顺序,每头奶牛都用其 ID 指代。

输出格式

共 N 行,按照 N 头奶牛的初始排列顺序,每行输出一头奶牛的 ID。

数据范围

1 ≤ N ≤ 100,
1 ≤ ai ≤ N

输入样例:

5
1 3 4 5 2
1234567 2222222 3333333 4444444 5555555

输出样例:

1234567
5555555
2222222
3333333
4444444
来源:https://www.acwing.com/problem/content/1764/

2. 思路分析:

首先需要读懂题目的意思,a1,a2...aN表示当前第i个元素放到位置a[i]上,每一个元素都有其唯一的id编号,我们已知的是经过三次"洗牌"操作也即将第i个元素放到位置a[i]上的最终结果,需要求解出一开始的元素顺序使得经过三次"洗牌"操作之后能够得到当前的最终结果,理解题目之后就比较好办了,我们根据最终的结果进行逆推即可,上一次的洗牌的结果为idx[i] = idx[a[i]],其中idx为牛当前的编号。

3. 代码如下:

class Solution:def process(self):n = int(input())# a的前面补一个0这样下标可以从1开始会比较方便a = [0] + list(map(int, input().split()))idx = [0] + list(map(int, input().split()))for i in range(3):# pre存储中间结果pre = [0] * (n + 10)for j in range(1, n + 1):pre[j] = idx[a[j]]# 将得到的中间结果赋值给idxfor j in range(1, n + 1):idx[j] = pre[j]for i in range(1, n + 1):print(idx[i])if __name__ == '__main__':Solution().process()

1762 牛的洗牌(递推)相关推荐

  1. AcWing 1762. 牛的洗牌(暴力)

    题目链接 https://www.acwing.com/problem/content/1764/ 思路 因为我们要做三次它的排序,那么我们初始状态的话每个位置上的编号就是本身,然后我们定义一个b数组 ...

  2. HDU1210 Eddy's 洗牌问题【递推函数+模拟】

    Eddy's 洗牌问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. python 内推_网易有道2017内推编程题 洗牌(python)

    本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下 ''' [编程题] 洗牌 时间限制:1秒 空间限制:32768K 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程 ...

  4. 有道python网课怎么样-网易有道2017内推编程题 洗牌(python)

    本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下 ''' [编程题] 洗牌 时间限制:1秒 空间限制:32768K 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程 ...

  5. 【牛客 - 1080E】tokitsukaze and Segmentation(dp,递推,思维)

    题干: 链接:https://ac.nowcoder.com/acm/contest/1080/E 来源:牛客网 tokitsukaze有一个长度为n的字符串,字符串仅包含'0'-'9'. tokit ...

  6. 【牛客 - 318L】彪神666(水题,半高精度,递推,trick)

    题干: 在国外,666代表魔鬼,777代表上帝. 所以牛逼的彪神就非常不喜欢6这个数字. 有一天彪神突发奇想,,他想求一些书与6无关的数. 如果一个数能被6整除,或者它的十进制表示法中某位上的数字为6 ...

  7. 牛客14607 递推(矩阵快速幂构造)

    链接:https://ac.nowcoder.com/acm/problem/14607 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言2621 ...

  8. 洗牌-牛客 第一行一个数T(T ≤ 100),表示数据组数。对于每组数据,第一行两个数n,k(1 ≤ n,k ≤ 100),接下来一行有2n个数a1,a2,...,a2n(1 ≤ ai ≤ 1000

    题目描述: 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张.首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上 ...

  9. 牛客网做题笔记--洗牌问题

    题目描述: 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张.首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上 ...

最新文章

  1. malloc free
  2. 四张图带你了解Tomcat系统架构--让面试官颤抖的Tomcat回答系列
  3. HTTP之Cookie
  4. 玩转大数据可视化,推荐几个必学的工具
  5. 移动web app开发必备 - zepto事件问题
  6. android 多线程 加锁,android 多线程 — 从一个小例子再次品位多线程
  7. 25 条 SSH 命令和技巧
  8. Quartus II bilibili 入门 EDA实用技术教程(一)---verilog语言编程基础
  9. java 正则表达式匹配_Java 正则表达式匹配
  10. 中兴android手机驱动,驱动天空 - 手机驱动 - 中兴手机 ZTE
  11. 详解事务的7种传播行为
  12. kafka consumer 如何设置每次重启时从最新数据开始读取
  13. 2021年应届生面试题(一文到底)
  14. 【转】表情识别(一)--传统方法概述
  15. 模糊测试工具Sulley开发指南(3)——整体介绍
  16. CentOS7部署网盘网站
  17. 【FFmpeg】ffplay 源代码结构图+播放模式分析
  18. 2022广东省安全员A证第三批(主要负责人)培训试题模拟考试平台操作
  19. 状语和状语从句的使用
  20. 国庆七连测(一)BREAD

热门文章

  1. Java程序员11面阿里,错失offer,期间还面了EMC+网易+美团......
  2. kriging.grid()差值转java算法
  3. 一起学Pandas系列基础篇---loc和iloc
  4. 对一级标题二级标题进行排序
  5. web前端课程设计——动漫网页2个网页HTML+CSS web前端开发技术 web课程设计 网页规划与设计
  6. 《Photoshop Lab修色圣典(修订版)》目录—导读
  7. firefox firbug 的“阻挡” blocking
  8. Spring之JDBC
  9. GO语言reflect反射篇
  10. 不成熟的梦想家 (未熟DREAMER)