1 条题解
-
0
. 问题重述
我们有一个初始全为 的数组 ,长度 。
Misuki 选择一台打字机(第一台从左到右写,初始位置 ;第二台从右到左写,初始位置 ),操作方式如下:- 写数字:将当前不在数组中的最小正整数(即 中第一个没写过的数)写入指针指向的位置(该位置必须为 )。
- 回车:指针回到该打字机的初始位置(第一台:,第二台:)。
- 移动指针:第一台:;第二台:。移动后必须在 范围内。
目标是:构造一个排列 ,使得从初始状态到 所需的最少回车次数,无论使用哪台打字机都相同。
设 = 用第一台打字机时的最少回车次数, = 用第二台时的最少回车次数。要求 。
. 计算 与
我们要考虑 中数字的排列顺序。令 表示数字 在 中的下标(-based)。
2.1 第一台打字机(从左到右)
指针从左到右移动,初始在 。
写数的顺序是 (因为每次写“当前不在数组中的最小正整数”)。当要写 时,光标位置 (写完 后光标所在位置)。
要写 ,如果 ,光标在右边,需要先回车到位置 ,再移动到 来写 。
如果 ,则光标可以向右移动(不回车)到达 ,所以不需回车。因此:
换一种写法(索引对齐到 ):
令 表示 与 这对:因为 意味着数字 在 右边,那么写完 要去写 需要向左移,必须回车。
2.2 第二台打字机(从右到左)
指针初始在 ,移动方向向左。
写数顺序仍是 (唯一可能不同,但依然是先写 再 再 ...)。
写完 后光标在 ,要去写 :- 若 ,光标在左边,要去右边(向右走),但第二台打字机只能向左移动或回车回到 再向左移,所以必须回车。
- 若 ,光标在右边,可以向左移动直接到达 ,不需要回车。
因此:
. 关键关系
显然,对每个 ,要么 ,要么 ,不可能相等(因为是排列)。
所以:
因为每一对 对 或 贡献恰好 。
要求 ,则:
所以必须有 为偶数,即 为奇数。
若 为偶数,则 不是整数,不可能相等,输出 。
. 构造方法
已知 为奇数。
一种构造:让相邻数对 的大小关系(在位置上的前后)交替变化,使得 。
示例构造:
$$p = [n-1,\ n,\ n-3,\ n-2,\ n-5,\ n-4,\ \dots,\ 2,\ 3,\ 1] $$即:先放 ,然后 ,然后 ,然后 ,... 最后 。
对 :
。检查:
- 在位置 , 在位置 计入 。
- 在位置 , 在位置 计入 。
- 在位置 , 在位置 计入 。
- 在位置 , 在位置 计入 。
,,,满足。
对 :
(按公式: )。检查:
- 记 。
- 记 。
,满足。
. 结论
解的存在性:当 为奇数时有解,偶数时无解。
奇数时构造方法(按上述交替模式)给出一个可行排列。
实现步骤
- 读入 。
- 对每个 :
- 若 偶数:输出 。
- 若 奇数:
- 若 :输出 。
- 否则按规则生成:$$\text{list} = [n-1, n, n-3, n-2, n-5, n-4, \dots, 2, 3, 1] $$具体可以用循环填充数组。
- 1
信息
- ID
- 6371
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者