#P14587. [Bulgarian 2026]Abstraction

    ID: 13803 传统题 4300ms 1024MiB 尝试: 4 已通过: 1 难度: 8 上传者: 标签>CF2400最小生成树并查集状压DP枚举图论贪心构造

[Bulgarian 2026]Abstraction

题目描述

给定一个长度为 N 的数组 A,下标为 0..N-1

考虑一个有 N 个点的完全图,其中点 i 与点 ji != j)之间边的权值为:

AiAjA_i \mid A_j

其中 | 表示按位或运算。

你需要求出这张图的最小生成树总权值。


实现要求

你需要实现函数:

long long solve(std::vector<int> A, int B);

参数含义:

  • A:数组 A_0, A_1, ..., A_{N-1}
  • B:该测试点满足 A_i < 2^B,且这是满足条件的最小整数。

函数返回最小生成树的总权值。


约束条件

  • 1 <= N <= 2^23
  • 0 <= A_i < 2^23

子任务

子任务 分值 需要通过的前置子任务 N 范围 B
0 - 4
1 8 0 <= 2^11 11
2 6 0-1 <= 2^14 14
3 4 <= 2^15 11
4 3 0-3 14
5 0-4 15
6 0-5 <= 2^16 16
7 10 0-6 <= 2^17 17
8 0-7 <= 2^18 18
9 0-8 <= 2^19 19
10 5 0-9 <= 2^20 20
11 0-10 <= 2^21 21
12 7 0-11 <= 2^22 22
13 23 0-12 <= 2^23 23

本地评测

本题为提交函数题。Hydro 配置包中的 grader.cpp 会读取官方压缩格式输入:

  • 第一行:N B
  • 第二行:一段 Base64 编码字符串,表示数组 A

程序最终只输出一个整数,即 solve(A, B) 的返回值。