1 条题解

  • 0
    @ 2026-4-6 13:16:29

    11. 问题重述

    我们有一个初始全为 1-1 的数组 aa,长度 nn
    Misuki 选择一台打字机(第一台从左到右写,初始位置 11;第二台从右到左写,初始位置 nn),操作方式如下:

    • 写数字:将当前不在数组中的最小正整数(即 1,2,3,1,2,3,\dots 中第一个没写过的数)写入指针指向的位置(该位置必须为 1-1)。
    • 回车:指针回到该打字机的初始位置(第一台:11,第二台:nn)。
    • 移动指针:第一台:i:=i+1i := i+1;第二台:i:=i1i := i-1。移动后必须在 1in1 \le i \le n 范围内。

    目标是:构造一个排列 pp,使得从初始状态到 a=pa = p 所需的最少回车次数,无论使用哪台打字机都相同。

    c1c_1 = 用第一台打字机时的最少回车次数,c2c_2 = 用第二台时的最少回车次数。要求 c1=c2c_1 = c_2


    22. 计算 c1c_1c2c_2

    我们要考虑 pp 中数字的排列顺序。令 posxpos_x 表示数字 xxpp 中的下标(11-based)。

    2.1 第一台打字机(从左到右)

    指针从左到右移动,初始在 11
    写数的顺序是 1,2,3,,n1,2,3,\dots,n(因为每次写“当前不在数组中的最小正整数”)。

    当要写 xx 时,光标位置 =posx1= pos_{x-1}(写完 x1x-1 后光标所在位置)。
    要写 xx,如果 posx<posx1pos_x < pos_{x-1},光标在右边,需要先回车到位置 11,再移动到 posxpos_x 来写 xx
    如果 posx>posx1pos_x > pos_{x-1},则光标可以向右移动(不回车)到达 posxpos_x,所以不需回车。

    因此:

    c1=#{x[2,n]posx<posx1}c_1 = \#\{x \in [2,n] \mid pos_x < pos_{x-1}\}

    换一种写法(索引对齐到 1..n11..n-1):
    xx 表示 xxx+1x+1 这对:

    c1=#{x[1,n1]posx>posx+1}c_1 = \#\{x \in [1,n-1] \mid pos_x > pos_{x+1}\}

    因为 posx>posx+1pos_x > pos_{x+1} 意味着数字 xxx+1x+1 右边,那么写完 xx 要去写 x+1x+1 需要向左移,必须回车。


    2.2 第二台打字机(从右到左)

    指针初始在 nn,移动方向向左。

    写数顺序仍是 1,2,,n1,2,\dots,n(唯一可能不同,但依然是先写 112233...)。
    写完 xx 后光标在 posxpos_x,要去写 x+1x+1

    • posx+1>posxpos_{x+1} > pos_x,光标在左边,要去右边(向右走),但第二台打字机只能向左移动或回车回到 nn 再向左移,所以必须回车。
    • posx+1<posxpos_{x+1} < pos_x,光标在右边,可以向左移动直接到达 posx+1pos_{x+1},不需要回车。

    因此:

    c2=#{x[1,n1]posx<posx+1}c_2 = \#\{x \in [1,n-1] \mid pos_x < pos_{x+1}\}

    33. 关键关系

    显然,对每个 xx,要么 posx<posx+1pos_x < pos_{x+1},要么 posx>posx+1pos_x > pos_{x+1},不可能相等(因为是排列)。

    所以:

    c1+c2=n1c_1 + c_2 = n-1

    因为每一对 x,x+1x, x+1c1c_1c2c_2 贡献恰好 11

    要求 c1=c2c_1 = c_2,则:

    c1=c2=n12c_1 = c_2 = \frac{n-1}{2}

    所以必须有 n1n-1 为偶数,即 nn 为奇数。

    nn 为偶数,则 n12\frac{n-1}{2} 不是整数,不可能相等,输出 1-1


    44. 构造方法

    已知 nn 为奇数。

    一种构造:让相邻数对 (x,x+1)(x, x+1) 的大小关系(在位置上的前后)交替变化,使得 c1=c2=(n1)/2c_1 = c_2 = (n-1)/2

    示例构造:

    $$p = [n-1,\ n,\ n-3,\ n-2,\ n-5,\ n-4,\ \dots,\ 2,\ 3,\ 1] $$

    即:先放 n1n-1,然后 nn,然后 n3,n2n-3, n-2,然后 n5,n4n-5, n-4,... 最后 2,3,12, 3, 1

    n=5n=5
    p=[4,5,2,3,1]p = [4,5,2,3,1]

    检查:

    • 11 在位置 5522 在位置 33 \Rightarrow pos1=5>pos2=3pos_1=5>pos_2=3 \Rightarrow (1,2)(1,2) 计入 c1c_1
    • 22 在位置 3333 在位置 44 \Rightarrow pos2=3<pos3=4pos_2=3<pos_3=4 \Rightarrow (2,3)(2,3) 计入 c2c_2
    • 33 在位置 4444 在位置 11 \Rightarrow pos3=4>pos4=1pos_3=4>pos_4=1 \Rightarrow (3,4)(3,4) 计入 c1c_1
    • 44 在位置 1155 在位置 22 \Rightarrow pos4=1<pos5=2pos_4=1<pos_5=2 \Rightarrow (4,5)(4,5) 计入 c2c_2

    c1=2c_1 = 2c2=2c_2 = 2n1=4n-1 = 4,满足。

    n=3n=3
    p=[2,3,1]p = [2,3,1](按公式:n1=2,n=3n-1=2, n=3 \Rightarrow [2,3,1][2,3,1])。

    检查:

    • pos1=3,pos2=1pos_1=3, pos_2=1 \Rightarrow 3>13>1 \Rightarrow (1,2)(1,2)c1c_1
    • pos2=1,pos3=2pos_2=1, pos_3=2 \Rightarrow 1<21<2 \Rightarrow (2,3)(2,3)c2c_2
      c1=1,c2=1c_1=1, c_2=1,满足。

    55. 结论

    解的存在性:当 nn 为奇数时有解,偶数时无解。

    奇数时构造方法(按上述交替模式)给出一个可行排列。


    实现步骤

    1. 读入 tt
    2. 对每个 nn
      • nn 偶数:输出 1-1
      • nn 奇数:
        • n=1n=1:输出 11
        • 否则按规则生成:$$\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
    上传者