首页 > 其他分享 >一种关于子集异或和的冷门反演

一种关于子集异或和的冷门反演

时间:2022-12-09 17:55:18浏览次数:37  
标签:right limits 反演 异或 子集 bigoplus oplus subseteq

前言

本文用集合的符号表示二进制数。具体地,定义全集 \(u\) 是 \(2^n-1\),某个二进制数 \(x\) 第 \(t\) 位是 1 可以理解为为 \(x\) 中有 \(t\) 号元素,否则没有。定义 \(|x|\) 代表的不是二进制数的绝对值,而是 1 的个数。\(x \subseteq y\) 当且仅当 \(x\& y = x\) 。其它符号类似。

一类问题

对于一个数列 \(b\) ,定义它的一种变换是 \(B_i = \bigoplus\limits_{j \subseteq i}{b_j}\) 现在给出 \(\{B_i\}\) ,求 \(\{b_i\}\) 。

一个恒等式

\[\bigoplus\limits_{t\subseteq y\subseteq x}{((u-x)\oplus y)} = \begin{cases} u, &t=x\\ 0, &|t| < |x|-1\\ t\oplus x, &|t| = |x|-1 \end{cases} \]

解决

基于上面的恒等式设计一种反演(按位与对异或有分配律):

\[\begin{align*} b'_i &= \bigoplus\limits_{j \subseteq i}{((u - i) \oplus j)\&B_j} & &(\ast)\\ &= \bigoplus\limits_{j \subseteq i}{\left[((u - i) \oplus j)\&\bigoplus\limits_{t\subseteq j}{b_t}\right]}\\ &= \bigoplus\limits_{t \subseteq i}{\left[b_t\&\bigoplus\limits_{t\subseteq j\subseteq i}{((u - i) \oplus j)}\right]}\\ &= b_i\oplus\left(\bigoplus\limits_{k=0}^{|u|}{2^k\&i\&b_{i-2^k}}\right) \end{align*} \]

其中的 \((\ast)\) 式可以通过对 \(\{B_i\}, \{i\& B_i\}\) 两个数列进行高维前缀和预处理来做到 \(\Theta(n\log n)\) 求得。

下面的问题是怎么把 \(b'\) 后面拖着的尾巴去掉,把它变回 \(b\) 。注意到 \(i-2^k < i\) ,所以按照从小到大的顺序还原 \(b\) ,当处理到 \(b_i\) 时直接枚举 \(i\) 的所有二进制位进行一个异或,就把后面消掉了,时间复杂度依然是 \(\Theta(n\log n)\) 。

应用

感觉没用。谁哪天用上了记得v我50。

标签:right,limits,反演,异或,子集,bigoplus,oplus,subseteq
From: https://www.cnblogs.com/kyeecccccc/p/16969112.html

相关文章

  • 698.partition-to-k-equal-sum-subsets 划为k个相等的子集
    问题描述698.划为k个相等的子集解题思路首先,对数组按照从大到小排序,相比从小到大排序,能避免[1,1,2,2]这样的数组的误判;利用used[i]数组避免重复使用同一个元素,如果......
  • 力扣 leetcode 78. 子集
    问题描述给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。提示:1<=nums.le......
  • 算法练习:排列组合之子集合
    问题描述输入一个含有不同数字的序列,输出其所有子集合(含空集)。要求:1)集合里元素有序排列;2)输出结果不含有重复集合 举例输入序列{3,1,2}输出:{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3} 问......
  • 位运算异或^的奇技淫巧
    ^异或的性质1、交换律  a^b==b^a2、结合律 (a^b)^c==a^(b^c)3、对于任何数x,都有x^x=0,x^0=x,同自己求异或为0,同0异或为自己4、A^A^B=B,连续和同一个因子做异或运算,最终......
  • poj1192 最优连通子集--树形dp
    原题链接:​​http://poj.org/problem?id=1192​​题意:其实就是一个求无向树的所有子树和的最大值分析:树形dpdp[i][0]表示以i为根,不包括i结点的子树获得最大权dp[i][1]表......
  • OJ周赛三场——异或和
    异或和 问题描述给定多个测试数据。给定一对l,r。请你求出l,l+1....r的异或和(异或的运算为两个数在二进制意义下,对于每一位,若相等则为0,否则为1,例如3xor4,即......
  • 10051. 「一本通 2.3 例 3」Nikitosh 和异或
    求A序列中的两个子序列(L1<=R1<L2<=R2),使 XORS(1)+XORS(2)最大XORS(区间内整数的异或和)  求left[i],right[i]前缀和后缀的区间内最大异或和 ,dp:left[......
  • 对于从1到N的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。
    #include<iostream>#include<vector>#include<cstdlib>usingnamespacestd;constintMax=10000;classDynamicClass{private:intn;//n表示{1,2,3,...n}longs......
  • 反演与筛法
    本文大量参考了:《反演与筛法》马耀华OI中(?)常用数论函数求和法的大致描述、zzt求和法的简化版,negiizhao1积性函数与反演我们先给出一些关于数论函数的基本定义。......
  • 异或(xor)的性质
    一点性质(1)xxory=zxxorz=y(2)xor是一个不带进位的二进制加法.实际例子已知\(n\)个同学的学号,现在有一场活动,来了\(n-1\)个同学,他们每个人都把自己的学号写......