HM252 给定洗牌
HM252 给定洗牌
来源: 第 252 集 常用排序算法-random_shuffle
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
洗牌算法 random_shuffle 把给定区间里的元素顺序打乱,只要传入起始迭代器和结束迭代器。使用前必须包含算法头文件,否则名字不可用。
它内部也依赖随机数。若不设定随机种子,多次运行会得到**同一套**打乱结果;在程序里调用一次 srand,并把 time(NULL) 交给它(时间头文件为 ctime),才能让每次运行都不同。抽签一类需求常用这种打乱,不必自己再写一套交换逻辑。
评测环境不能依赖未固定的系统时间。本题改为:**读入一组下标置换**,按下标从原序列取出元素,得到确定的打乱结果。下标从 \(0\) 开始,保证是 \(0 \sim n-1\) 的一个排列。
输入格式
第一行一个整数 \(n\)。
第二行 \(n\) 个整数,表示原序列。当 \(n=0\) 时本行可以是空行。
第三行 \(n\) 个整数 \(p_0,p_1,\ldots,p_{n-1}\),表示置换。当 \(n=0\) 时本行可以是空行。
输出格式
一行,打乱后的序列:第 \(i\) 个位置(从 \(0\) 计)放原序列下标 \(p_i\) 上的元素。同一行内用单个空格分隔,行末换行。空序列输出空行。
样例
输入 #1
10
0 1 2 3 4 5 6 7 8 9
8 1 9 2 0 5 7 3 4 6
输出 #1
8 1 9 2 0 5 7 3 4 6
输入 #2
1
42
0
输出 #2
42
说明
\(0 \le n \le 1000\),元素绝对值不超过 \(10^9\),\(p\) 是 \(0 \sim n-1\) 的排列。
样例 #1 原序列是 \(0\sim 9\),按给定下标取出后得到确定的打乱结果,不使用系统时间种子。
信息
- ID
- 1251
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者