1 条题解

  • 0
    @ 2025-8-24 22:56:28

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar David_Mercury
    The love you take is equal to the love you make.

    搬运于2025-08-24 22:56:28,当前版本为作者最后更新于2024-09-30 17:51:59,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    Preface

    提供一份严谨的数学证明。

    感谢

    https://www.luogu.com.cn/user/580608
    明了部分结论。


    前置数学知识

    • 定义 {x}=xx\{x\} = x - \lfloor x \rfloor,即 xx 的分数部分。它也可以表示为 {x}=xmod1\{x\} = x \bmod 1

    • [P(x)][P(x)] 为艾弗森括号,当命题 P(x)P(x) 为真时值为 11,否则为 00

    • mod\bmod 运算满足分配律,即 c(xmody)=cxmodcyc(x \bmod y) = cx \bmod cy

    • x=x\lceil -x \rceil = -\lfloor x \rfloor


    Part 1.

    可以发现,问题等价于将 ss 中的每个 11tt 中的每个 11 两两配对,并最小化代价。

    这里我们需要先证明一下这个“代价”是什么:

    引理:将位置 x,yx, y 交换并保持中间数不改变的最优移动次数为 (yx)/k\lceil (y-x)/k \rceil。(x,yx, y 满足 x<y,s[x]s[y]x < y, s[x] \ne s[y]。)

    证明:使用数学归纳法。当 yxky-x \le k 时结论显然成立。当 yx>ky-x > k 时,若 s[x]s[x+k]s[x] \ne s[x+k],则我们可以直接交换 x,x+kx, x+k,问题转化到 x+k,yx+k, y 的情形;否则 s[x]=s[x+k]s[x] = s[x+k],我们则可以先对 x+kx+kyy 进行交换操作,这时就有 s[x]s[x+k]s[x] \ne s[x+k] 了。


    Part 2.

    引理:如果有 a,b,c,da, b, c, d 四个位置满足 c>a>bc > a > ba>da > d,则绝对不会出现 (c,b)(c, b) 配对、(a,d)(a, d) 配对的情况。

    对于 c<a<bc < a < ba<da < d 同理。

    用人话表述,就是对于序列 ss 中的所有 11,绝对可以分为若干段“全部向右匹配”或者是“全部向左匹配”的段。绝对不会出现“交叉”的情形

    证明:

    1. c>a>b>dc > a > b > d

      如果无交叉配对,即 (c,a)(c, a) 配对、(b,d)(b, d) 配对,有代价:

      $$\left\lceil \dfrac{c-a}{k} \right\rceil + \left\lceil \dfrac{b-d}{k} \right\rceil $$

      如果有交叉配对,即 (c,b)(c, b) 配对、(a,d)(a, d) 配对,有代价:

      $$\left\lceil \dfrac{c-b}{k} \right\rceil + \left\lceil \dfrac{a-d}{k} \right\rceil $$

      显然有:

      $$\left\lceil \dfrac{c-a}{k} \right\rceil \le \left\lceil \dfrac{c-b}{k} \right\rceil, \left\lceil \dfrac{b-d}{k} \right\rceil \le \left\lceil \dfrac{a-d}{k} \right\rceil $$

      结论成立。

    2. c>a>d>bc > a > d > b

      代价式子和上面是一样的。而由于此时有:

      $$\left\lceil \dfrac{c-b}{k} \right\rceil \ge \left\lceil \dfrac{c-a+d-b}{k} \right\rceil \ge \left\lceil \dfrac{c-a}{k} \right\rceil + \left\lceil \dfrac{d-b}{k} \right\rceil - 1 $$

      故有:

      $$\begin{aligned} \left\lceil \dfrac{c-b}{k} \right\rceil + \left\lceil \dfrac{a-d}{k} \right\rceil &\ge \left\lceil \dfrac{c-a}{k} \right\rceil + \left\lceil \dfrac{d-b}{k} \right\rceil + \left(\left\lceil \dfrac{a-d}{k} \right\rceil - 1\right) \\ &\ge \left\lceil \dfrac{c-a}{k} \right\rceil + \left\lceil \dfrac{d-b}{k} \right\rceil \end{aligned} $$

      结论成立。

    由于该结论成立,我们完全可以将整个序列拆成若干段来处理,每段内有“tt 的前缀和 \ge ss 的前缀和”或“ss 的前缀和 \ge tt 的前缀和”。因为二者是对称的,在接下来的推导中我们将以前者为例,即所有 ss 中的 11 向右方 tt 中的 11 配对。


    Part 3.

    注意:接下来我们就要开始推式子了,请你回顾一下前面的数学前置知识。

    nn 表示该段中 11 的个数,p(i)p(i) 为一个 1n1 \sim n 的排列,si,tis_i, t_i 分别表示 s,ts, t 内该段中第 ii11 的下标。则我们可以写出该段的代价表达式:

    $$\sum_{i=1}^n \left\lceil \dfrac{t_{p(i)} - s_i}{k} \right\rceil $$

    由于我们更喜欢向下取整,我们将其化为如下的形式:

    $$\sum_{i=1}^n \left\lceil \dfrac{t_{p(i)} - s_i}{k} \right\rceil = - \sum_{i=1}^n \left\lfloor \dfrac{s_i - t_{p(i)}}{k} \right\rfloor $$

    然后我们发现,如果将分数部分提出,我们将得到一个定值。令 xi=sik,yi=tikx_i = \dfrac{s_i}{k}, y_i = -\dfrac{t_i}{k},有:

    $$\sum_{i=1}^n \lfloor x_i+y_{p(i)} \rfloor = \sum_{i=1}^n x_i + \sum_{i=1}^n y_i - \sum_{i=1}^n \{x_i + y_{p(i)}\} $$

    于是我们需要最小化 i=1n{xi+yp(i)}\sum_{i=1}^n \{x_i + y_{p(i)}\}

    xi={xi},yi={yi}x_i' = \{x_i\}, y_i' = \{y_i\},有:

    $$\sum_{i=1}^n \{x_i + y_{p(i)}\} = \sum_{i=1}^n x_i' + \sum_{i=1}^n y_i' - \sum_{i=1}^n [x_i' + y_{p(i)}' \ge 1] $$

    于是我们需要最大化 i=1n[xi+yp(i)1]\sum_{i=1}^n [x_i' + y_{p(i)}' \ge 1]

    $$\begin{aligned}\sum_{i=1}^n [x_i' + y_{p(i)}' \ge 1] &= \sum_{i=1}^n \left[ \dfrac{s_i}{k} \bmod 1 + \left(-\dfrac{t_{p(i)}}{k}\right) \bmod 1 \ge 1 \right] \\ &= \sum_{i=1}^n \left[ s_i \bmod k + (-t_{p(i)}) \bmod k \ge k \right]\end{aligned} $$

    于是我们需要最大化余数相加 k\ge k 的对数。

    不难想到如下贪心:让每个 (ti)(-t_i) 匹配最小的能够 k\ge ksimodks_i \bmod k;如果找不到,那就匹配一个最小的 simodks_i \bmod k 以减少损失。换句话说,就是匹配第一个 timodk\ge t_i \bmod ksimodks_i \bmod k,如果找不到就匹配最小的 simodks_i \bmod k

    set 维护,能在 O(nlogn)O(n \log n) 的时间复杂度内解决本题。

    代码嘛,本质上和其他题解是一模一样的,就不放了。

    • 1

    信息

    ID
    9923
    时间
    2000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    0
    已通过
    0
    上传者