1 条题解

  • 0
    @ 2026-4-4 18:27:35

    C. 信仰崩塌

    核心结论

    这是一道构造题,我们只需要补一个数字bb 数组中,就能得到满足所有条件的 aa 数组。 补的数字可以直接计算得出,且构造方式固定、简单、合法。


    题意公式回顾

    原序列 aa 长度为 2n+12n+1,必须满足:

    $$a_1 = a_2 - a_3 + a_4 - a_5 + \dots + a_{2n} - a_{2n+1} $$

    我们已知的是:aa 删去一个元素、打乱后得到 bb(长度 2n2n)。


    构造思路

    步骤 1

    bb 数组从大到小排序

    步骤 2

    计算要补的数 sumsum(就是被删掉的那个数):

    $$sum = b_0 + b_1 + (b_2 - b_3) + (b_4 - b_5) + \dots $$

    步骤 3

    按下面格式输出最终 aa 数组(满足公式 + 互不相同):

    $$a = [\ b_0,\ sum,\ b_1,\ b_3,\ b_2,\ b_5,\ b_4,\ \dots \ ] $$

    严格证明构造合法

    1. 满足公式

    按构造输出的 aa 满足:

    $$a_1 = a_2 - a_3 + a_4 - a_5 + \dots + a_{2n} - a_{2n+1} $$

    代入构造形式:

    b0=sumb1+b2b3+b_0 = sum - b_1 + b_2 - b_3 + \dots

    而我们的 sumsum 就是按这个等式算出来的,等式天然成立

    2. 所有数互不相同

    • sumsum 由最大的两个数相加再加减得到,一定严格大于 bb 中所有数
    • bb 中数本来就互不相同。
    • 因此最终 aa 数组两两不同

    3. 数值范围合法

    sum1018sum \le 10^{18},完全满足题目要求。


    复杂度

    • 排序:O(nlogn)O(n\log n)
    • 计算:O(n)O(n)
    • 总复杂度:O(nlogn)O(n\log n)
      完全可以通过 n2×105n \le 2\times 10^5

    最终总结

    1. bb 从大到小排序
    2. 算一个补数 sumsum
    3. 按固定格式输出 aa 数组 就可以满足题目所有条件。
    • 1

    信息

    ID
    6365
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者