AT_KeioPC2025_m.Popcount MST
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
对于长度为 N 的整数序列 A=(A0,…,AN−1),我们定义 f(A) 如下。这里 a AND b 表示 a 与 b 的按位与操作。
- 我们考虑一个有 2N 个顶点的加权完全图 G,顶点编号为 0 到 2N−1。对于顶点 i 和顶点 j 之间的边,其权值为 Apopcount(i AND j)。此时,该图 G 的最小生成树所包含的所有边的权值之和记为 f(A)。
给定长度为 N 的整数序列 B=(B0,…,BN−1),其中 B 的每个元素为 −1 或者 1 到 M 之间的整数。
将 B 中所有 −1 替换成 1 到 M 之间的整数,可以得到一个数列 B′。若 B 中 −1 的个数为 q,则这样的 B′ 一共有 Mq 种可能。
请你计算所有可能的 B′ 的 f(B′) 之和,对 998244353 取模后输出。
popcount 是什么?对于非负整数 x,popcount(x) 表示将 x 用二进制表示时 1 的个数。更严格地说,对于非负整数 x,若 x=∑i=0∞bi2i (bi∈{0,1}),那么 popcount(x)=∑i=0∞bi。
例如,将 13 用二进制表示为 1101,因此 popcount(13)=3。
输入格式
输入通过标准输入提供,格式如下:
N M
B0 … BN−1
输出格式
请输出答案。
输入输出样例
输入#1
2 2 -1 2
输出#1
9
输入#2
7 7 -1 7 -1 7 -1 7 -1
输出#2
801052
输入#3
8 8 5 7 2 4 7 1 8 6
输出#3
445
说明/提示
部分分
本题包含部分分。
- 如果你的算法可以正确解决满足 1≤Bi≤M 的数据,将获得 1 分。
样例解释 1
所有可行的 B′ 有如下 2 种:
- 当 B′=(1,2) 时,一个可能的最小生成树由边 (0,1),(0,2),(0,3) 构成,权值和为 3。
- 当 B′=(2,2) 时,一个可能的最小生成树由边 (0,1),(1,2),(2,3) 构成,权值和为 6。
因此,所有 B′ 的 f(B′) 之和为 9。
数据范围
- 1≤N,M≤125000
- Bi 为 −1 或 1 到 M 之间的整数。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?