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. sys和system的区别
  2. 安装python3.6.1_CentOS 7 安装Python3.6.1 多版本共存
  3. (JAVA学习笔记) 类的继承,super,方法的重写,多态
  4. 看懂堆排序——堆与堆排序(三)
  5. 常用Jquery前端操作
  6. java json帮助类_java 写一个JSON解析的工具类
  7. mysql 5.6参数_初识 MySQL 5.6 新功能、参数
  8. HTTP协议与HTTPS的区别
  9. html5怎么给视频加字幕,怎么给视频添加文字 怎么用Premiere Pro cs6给视频中添加文字...
  10. 司铭宇讲师为平安人寿保险300位管理层培训《新生代员工的管理与激励》企业内训
  11. JAVA基于JSP的疫情学生宿舍管理系统【数据库设计、论文、源码、开题报告】
  12. SUN 的Java认证体系
  13. 谷歌升级商业搜索软件
  14. 二论骇客文化,个人英雄主义的终结,团队精神登上舞台
  15. 黑客留下的网站后门,可以作什么?
  16. 【LAS】IJK中las 的自适应配置没有给出?
  17. 陌生人社交网络大起底:谁是下一个陌陌?
  18. RPA机器人的6大收益
  19. 抓住“开源盛世“,这个工具你必须了解一下
  20. 【Matlab】信号FIR滤波及谱分析

热门文章

  1. 2020年12月陕西计算机等级考试,2020年12月陕西全国计算机应用水平考试报名时间...
  2. ColorMatrix 5*5颜色矩阵
  3. Windows系统快速查看文件md5
  4. python遍历列表易出错!!!!!
  5. 2020年第十五届全国大学生智能汽车竞赛技术报告
  6. 查询同网段ip使用情况
  7. 52GB!网曝网易邮箱数据又泄露?还是葫芦娃?
  8. 【Flutter脱发实录】盘一盘InheritedWidget
  9. 2020-05-16 购物时明白自己的需求才最重要+拖延症患者
  10. ES6 ~ ES11整理