CF772D Varying Kibibits

题意:给出一个长度为 的自然数集合

对于非空自然数集合 ,定义函数 为:在(十进制)各个位上取最小值组成新数的数值。

定义函数

的异或和。

,时限


套路题。

  • 前置芝士:位运算卷积

题目要求我们对每个 求出 的子集 的和的平方。

定义十进制位运算 ,运算规则为每一位取 。不难验证其交换律结合律。 即为 中所有元素的 和。由于各位独立,我们可以将十进制数视为向量。

我们欲求的是: (空集特殊处理)

若十进制向量 每一位都小于等于 ,称

考虑计算超集和,再差分,即令:

进行高维差分即可得到

注意到 当且仅当 中的每一项都 ,可以简化条件。记 的所有数的集合,则 $$

$$

为了求出 ,我们需要 只需三次高维后缀和。

设值域为 ,复杂度为