问题2302--双种群遗传算法之基因交叉

2302: 双种群遗传算法之基因交叉

[命题人 : ]
时间限制 : 1 sec  内存限制 : 128 MB

提交

题目描述

        19级的高配小学生退役多年如今在ZSTU读研,偶然间读到某硕士的一篇学位论文,大致内容是基于双种群遗传算法,以求解不规则多边形排样问题。复现其算法后感觉甚是有趣。所以现邀请23届的学弟学妹们求解其简化版本的一个步骤,论文中对该步骤的描述整合如下:

       现有数量为$n$的物体进行排样操作,在某一步骤中存在长度为$n$的基因序列$a(a_1...a_n),b(b_1...b_n)$来描述物体的顺序,给定基因交叉点$L,F$,子代基因序列ans根据基因序列$a,b$的交叉变换得出,交叉变换规则为:ans从$L$到$F$之间序号的内容与序列$a$相同,剩余序号与序列$b$相同。

(注:为避免表述歧义,给出贴心提示,“剩余序号与序列$b$相同”是指:剩余序号为$b$序列中剔除$a[index](index∈[L,F])$后的顺序序列)

输入

第一行输入一个正整数$n$,表示有$n(3\le n\le 10^5)$个物体。
第二行输入一个长度为$n$的序列$a(1\le a_i\le n)$,且互不相同
第三行输入一个长度为$n$的序列$b(1\le b_i\le n)$,且互不相同
第四行输入两个整数$L,F(1\le L< F\le n)$

输出

输出$n$个整数,代表最终的ans序列

样例输入 Copy

10
6 3 7 8 5 1 2 4 9 10
1 6 2 8 9 5 4 7 10 3
3 7

样例输出 Copy

6 9 7 8 5 1 2 4 10 3