1 条题解

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

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar McIron233
    喵喵?

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

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

    以下是正文


    数据人题解。

    考虑到 aia_i 的顺序并不影响答案的相对位置,因此对 aia_i 从小到大排序。

    从题目的第二个条件入手:

    $\dfrac{\sum\limits_{i=1}^n (a_i \cdot b_i)}{\sum\limits_{i=1}^n b_i}$ 为整数,即 aia_i 的权为 bib_i 时,序列 aa 的加权平均数为整数。

    设这个加权平均数为 λ\lambda,那么有:

    $$\begin{aligned} &\ \frac{\sum\limits_{i=1}^n (a_i \cdot b_i)}{ \sum\limits_{i=1}^n b_i}=\lambda \\ &\ \sum\limits_{i=1}^n (a_i \cdot b_i)=\lambda \sum\limits_{i=1}^n b_i \\ &\ \sum\limits_{i=1}^n (a_i \cdot b_i)=\sum\limits_{i=1}^n (\lambda b_i) \\ &\ \sum\limits_{i=1}^n (a_i \cdot b_i)-\sum\limits_{i=1}^n (\lambda b_i)=0 \\ &\ \sum\limits_{i=1}^n [b_i (a_i - \lambda)]=0 \end{aligned} $$

    因此当 λ\lambda 确定,整个序列 ci=aiλc_i=a_i - \lambda 就确定,相应的 bib_i 也就有比较简单的构造方案了,问题转化成找到一个合适的 λ\lambda。显然,当 λ\lambdaaia_i 中位数越近,序列 bib_i 越好构造。

    考虑直接取中位数,那么我们需要根据 nn 的奇偶性分类讨论:

    nn 是奇数

    那么直接取 λ=an2\lambda = a_{\lceil \frac{n}{2} \rceil},然后得到序列 cic_i。显然,cic_i 是单调递增的,且前 n2\lfloor \dfrac{n}{2} \rfloor 个元素都是负数,后 n2\lfloor \dfrac{n}{2} \rfloor 个元素都是正数。所以我们可以在 in2i \not= \dfrac{n}{2} 时直接取 bi=cni+1b_i={| c_{n-i+1} |};在 i=n2i = \dfrac{n}{2} 时,直接取 bi=mb_i=m

    证明:第二个条件已由刚才的构造得到满足。

    对于第一个条件“序列 bb 中的每个元素均为不大于 mm 的正整数”,容易发现 anλ<m| a_n-\lambda | < ma1λ<m| a_1-\lambda | < m,那么第一个条件也就能进而成立。

    对于第三个条件“不存在有序三元整数组 (i,j,k)(i,j,k),满足 1i<j<kn1\le i<j<k\le nbi=bj=bkb_i=b_j=b_k”,我们发现由于 aia_i 是互不相同的,因此 cic_i 中绝对值相等的数也最多只有 22 个,不会达到 33 个,此外,anλ<ma_n - \lambda <m,所以 cic_i 中没有绝对值为 mm 的元素。故第三个条件同样满足。

    举一个构造例子。当 ai={1,3,4,6,7}a_i=\{1,3,4,6,7\}m=7m=7 来说,λ=a3=4\lambda=a_3=4,得到 ci={3,1,0,2,3}c_i=\{-3,-1,0,2,3\},对应有:b1=c51+1=c5=3b_1=|c_{5-1+1}|=|c_5|=3,其余元素同理,且 b3=m=7b_3=m=7,于是 bi={3,2,7,1,3}b_i=\{3,2,7,1,3\}

    nn 是偶数

    这时候需要进行简单转化。容易发现当序列 aia_i 中间两个数不连续时直接取 λ\lambda 满足 an2<λ<an2+1a_{\frac{n}{2}}<\lambda<a_{\frac{n}{2}+1},然后类比 nn 是奇数的方法来构造即可,不同点是不需要确定 bn2b_\frac{n}{2} 的值。

    如果中间两个元素连续,考虑取 λ\lambda 是中间两个元素中的一个,接下来使用如下的构造方法。

    构造方法

    这里取 λ=an2\lambda=a_{\frac{n}{2}},那么得到的序列 cic_i 中负数元素数量比正数元素数量少 11 个。考虑合并两个正数元素。容易发现此时 cn2+1=1c_{\frac{n}{2}+1}=1,因此将 cn2+1c_{\frac{n}{2}+1}cnc_n 合并,具体方式是:cncn+1c_n \leftarrow c_n+1,然后与 nn 是奇数的相似方法(有不同点)构造,再 bn2+1bnb_{\frac{n}{2}+1} \leftarrow b_n 就完成了。

    显然,在这种情况下 n=2n=2 时是无解的,证明可以从另一个角度——分离常数法来解释。

    不同点:由于第三个条件“不存在有序三元整数组 (i,j,k)(i,j,k),满足 1i<j<kn1\le i<j<k\le nbi=bj=bkb_i=b_j=b_k”,我们为合并后的 cnc_n 配对时,需要在 [1,n)[1,n) 中寻找一个合适的 cic_i 满足 cicnc_i \not=c_n。所以有可能出现找不到这样的 cic_i 的情况,那么取 λ=an2\lambda=a_{\frac{n}{2}} 时就不可行了,换用 λ=an2+1\lambda=a_{\frac{n}{2}+1},然后类比该构造方法。可以证明两个 λ\lambda 中至少有一个是可行的。

    关于两个 λ\lambda 至少一者可行的证明

    这里给出两个 λ\lambda 取值时得到的 cic_i 序列:

    λ\lambda 取值/下标 11 22 \cdots n2\dfrac{n}{2} n2+1\dfrac{n}{2}+1 \cdots n1n-1 nn
    an2a_{\frac{n}{2}} x1x_1 x2x_2 \cdots 00 11 \cdots xn1x_{n-1} xnx_n
    an2+1a_{\frac{n}{2}+1} x11x_1-1 x21x_2-1 1-1 00 xn11x_{n-1}-1 xn1x_n-1

    注:xix_i 互不相同。

    根据 cic_i 的单调递增性,两个 λ\lambda 都不合法的必要条件是:

    $$\begin{cases} x_1+1+x_n=0 \\ x_1-1-1+x_n-1=0 \end{cases} $$

    而这个方程组没有解。所以两个 λ\lambda 中至少有一者合法。

    构造时间复杂度

    单组测试数据的时间复杂度是 O(nlogn)O(n \log n),瓶颈在排序。

    • 1

    信息

    ID
    9479
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者