思路求hack(关注悬赏)
查看原帖
思路求hack(关注悬赏)
328170
Kalium楼主2023/2/2 09:48

设最后求得答案为 ansians_i

先令 ansi=ians_i=i, 求的左右两边和,若右边的和小于 b,无解;左右两边分别大于 a, b,输出排列。

定义a和原先左边的差为 cha1cha1,b和原先右边的差为 cha2cha2,当 cha1>cha2cha1 > cha2 无解,否则从下标 1 开始,加上,与 i+cha1i+cha1,交换。若 i+cha1i + cha1 大于了最右端,与最右端交换后将最右端左移,然后修改 cha1cha1。若不大于最右端,记录位退出。

判断该位置加上 cha1 是否过了 n/2n/2,没有就将 ansn>>1ans_{n>>1}ans(n>>1)+cha1ans_{(n >> 1) + cha1} 交换,过了 n/2n/2 让当前位置和当前位置+cha1的位置 交换。

输出的话,若是 a<ba<b 正序输出,否则倒序输出。

2023/2/2 09:48
加载中...