1 条题解

  • 3
    @ 2026-9-23 17:26:42

    对于一个非空子集 SS,其所有元素的最小公倍数为 $2^{\max_{j \in S} a_j} \times 3^{\max_{j \in S} b_j}$。

    如果我们直接枚举子集,复杂度将是 O(2n)O(2^n),显然无法接受。我们可以改变思路:按最大值元素进行归类计算。

    将所有元素按照 aia_i 升序排列;如果 aia_i 相同,则按 bib_i 升序排列。

    排序后,我们假设子集中最靠后的元素下标为 ii。那么由于排序的性质,该子集的最大 aa 值必定为 aia_i。

    这就把所有的非空子集完美划分成了 nn 个不重不漏的类:对于固定的 ii,子集必定包含元素 ii,且其余元素只能从 11 到 i−1i-1 中选取。

    当最大元素下标固定为 ii 时,该子集的 aa 维度最大值是 aia_i。那么 bb 维度的最大值是什么呢?

    包含元素 ii 的子集 bb 维度的最大值为 max⁡(bi,max⁡j∈S{i}bj)\max(b_i, \max_{j \in S \{i\}} b_j)。

    我们需要在所有由 {1,2,…,i−1}\{1, 2, \dots, i-1\} 组成的子集中,对 3max⁡(bi,… )3^{\max(b_i, \dots)} 求和。

    我们将前 i−1i-1 个元素的 bb 值集合记为 BB。对于 BB 中的元素:

    • 所有 ≤bi\le b_i 的元素,无论是否选入子集,都不会超过 bib_i。如果共有 cc 个这样的元素,它们会产生 2c2^c 种组合,对这 2c2^c 种子集而言,bb 的最大值均为 bib_i。
    • 对于 BB 中 >bi> b_i 的元素,如果选了它们,最大值就会由它们决定。我们将 BB 中 >bi> b_i 的元素从小到大排列,如果子集中的最大值恰好排在第 kk 位(即前面有 k−1k-1 个比它小的数),那么共有 2k−12^{k-1} 种子集能以它为最大值。

    使用一棵线段树,以离散化后的 bb 值为下标,动态维护集合 BB 中元素的分布情况。线段树的每个节点维护两个值:

    • cnt:区间内当前存在的元素个数。
    • val:区间内所有元素若作为最大值时,提供的权值之和,即 ∑2k−13vk(mod109+7)\sum 2^{k-1} 3^{v_k} \pmod{10^9+7}。

    upup 时,左子树的元素一定小于右子树的元素。因此,右子树中的元素在整个区间内排名时,前面会额外多出左子树的 cnt 个元素。

    cnt=left.cnt+right.cnt cnt = left.cnt + right.cnt $$val = (left.val + right.val * 2^{left.cnt}) \pmod{10^9+7}$$

    以样例 11 为例:3 个数,分别为 (1, 2), (2, 1), (1, 2)。

    排序后:1: (1,2)、2: (1,2)、3: (2,1)。

    • 处理第 1 个数 (1, 2):当前树为空,c=0c=0。大于 bi=2b_i=2 的部分也为空。该数构成的组合值为 20×32=92^0 \times 3^2 = 9。乘以 2a12^{a_1} 得到 21×9=182^1 \times 9 = 18。将 b=2b=2 插入线段树,线段树中 b=2 节点 cnt=1, val=9。总和 ans = 18。
    • 处理第 2 个数 (1, 2):查询 ≤2\le 2 的元素个数 c=1c=1。大于 22 的部分为空。组合值为 21×32=182^1 \times 3^2 = 18。乘以 2a22^{a_2} 得到 21×18=362^1 \times 18 = 36。将 b=2b=2 再次插入线段树,此时 b=2 节点 cnt=2,利用合并公式 val = 9 + 9 * 2^1 = 27。总和 ans = 18 + 36 = 54。
    • 处理第 3 个数 (2, 1):查询 ≤1\le 1 的元素个数 c=0c=0。大于 11 的部分有 b=2 的节点,其返回 val=27。组合值为 20×(31+27)=302^0 \times (3^1 + 27) = 30。乘以 2a32^{a_3} 得到 22×30=1202^2 \times 30 = 120。将 b=1b=1 插入线段树。总和 ans = 54 + 120 = 174。
    • 1

    信息

    ID
    2751
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    (无)
    递交数
    15
    已通过
    7
    上传者