问题

给出两个幂级数 \(f,g\) ,求
\[
h=\sum _i\sum _jx^{i\oplus j}f_ig_j
\]
其中 \(\oplus\) 是可拆分的位运算。

算法

由于位运算具有独立性,可以一位位地考虑。

设 \(f=(f_0,f_1)\) ,即最高位为 0 的部分和最高位为 1 的部分。我们希望把这个卷积转化为点积来做。即
\[
T\begin{bmatrix}f_0 \\f_1 \end{bmatrix}\cdot T\begin{bmatrix}g_0 \\g_1 \end{bmatrix}=T\begin{bmatrix}h_0 \\h_1 \end{bmatrix}
\]
按照 \(f,g,h\) 的对应关系,对比系数容易得到 \(T\) 。

那么我们就可以先对 \(f,g\) 递归进行上述变换,然后再点积起来,逆变换回去,这样就能得到我们需要的 \(h\) 。显然逆变换可以直接用矩阵 \(T^{-1}\) 做同样的操作。

复杂度为 \(O(nk^2\log n)\) ,\(k\) 为位状态数。

拓展

上面的过程只用到了位运算的可拆分性,所以可以尝试拓展一下。例如更高进制的位运算卷积,可以用完全一样的方法来做。做之前只要定义好位的运算即可。例如 [清华集训2016]石家庄的工人阶级队伍比较坚强 中的三进制卷积,类比二进制异或,定义三进制不进位加法,构造出输赢的异或关系即可。

位运算卷积-FWT的更多相关文章

  1. @总结 - 2@ 位运算卷积/子集卷积 —— FWT/FMT

    目录 @0 - 参考资料@ @1 - 异或卷积概念及性质@ @2 - 快速沃尔什正变换(异或)@ @3 - 快速沃尔什逆变换(异或)@ @4 - 与卷积.或卷积@ @5 - 参考代码实现@ @6 - ...

  2. [note]一类位运算求最值问题

    [note]一类位运算求最值问题 给定一些数,让你从中选出两个数a,b,每次询问下列中的一个 1.a and b的最大值 2.a xor b的最大值 3.a or b的最大值 神仙们都是FWT,小蒟蒻 ...

  3. Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range

    在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...

  4. 简简单单学会C#位运算

    一.理解位运算 要学会位运算,首先要清楚什么是位运算?程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),位运算就是直接对在内存中的二进制数的每位进行运算操作 二.理解数字进制 上面 ...

  5. SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解

    本文目录列表: 1.位运算 2.设置日历数据表节假日标志 3.总结语 4.参考清单列表   位运算   SQL Server支持的按位运算符有三个,分别为:按位与(&).按位或(|).按位异或 ...

  6. js中的位运算

    按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是"位": 数值或字符在内存内都是被存储为0和 1的序列,每个0和1被称之为1个位,比如说10 ...

  7. Java中的位运算

    昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~  按位非(NOT)(一元运算) ...

  8. C#位运算讲解与示例

    首先每一个权限数都是2的N次方数 如:k1=2 ; //添加 k2=4 ; //删除 k3=8; //修改 ... 如此定义功能权限数,当需要组合权限时,就需要对各个所拥有的权限数按位或了. 如: p ...

  9. C#枚举中的位运算权限分配浅谈

    常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理. 第 ...

随机推荐

  1. day59

    轮播图作业 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...

  2. 【webstorm】project目录树显示不出

    问题原因:webstorm自动生成的配置文件 .idea/modules.xml损坏. 解决: 1.关掉webstorm: 2.删除该项目下的.idea文件夹(如果隐藏,请设置显示隐藏文件夹): 3. ...

  3. BZOJ4999: This Problem Is Too Simple!树链剖分+动态开点线段树

    题目大意:将某个节点的颜色变为x,查询i,j路径上多少个颜色为x的点... 其实最开始一看就是主席树+树状数组+DFS序...但是过不去...MLE+TLE BY FCWWW 其实树剖裸的一批...只 ...

  4. 【LeetCode5】Longest Palindromic Substring★★

    1.题目描述: 2.解题思路: 题意:求一个字符串的最长回文子串. 方法一:中心扩展法.遍历字符串的每一个字符,如果存在回文子串,那么中心是某一个字符(奇数)或两个字符的空隙(偶数),然后分两种情况( ...

  5. SharePoint2016配置工作流开发环境

    1,下载Web PlatForm5.0  地址:https://www.microsoft.com/web/downloads/platform.aspx 2,保证开发环境能连网,安装Web Plat ...

  6. 网络对抗第一次实验——PC平台逆向破解(5)M

    网络对抗第一次实验--PC平台逆向破解(5)M 实践一 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 操作步骤: 获取实验用文件pwn1,复制,复制出来的文件改名为20155 ...

  7. 20155304《网络对抗》MSF基础应用

    20155304<网络对抗>MSF基础应用 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_ ...

  8. vue-cli 使用 font-awesome 字体插件

    在 cmd 中,运行:cnpm install font-awesome在 main.js 里添加import "font-awesome/css/font-awesome.css" ...

  9. 双面间谍(spy)

    双面间谍 链接 分析: 戳这 代码: #include<cstdio> #include<algorithm> #include<cstdio> #include& ...

  10. [51Nod1238]最小公倍数之和 V3[杜教筛]

    题意 给定 \(n\) ,求 \(\sum_{i=1}^n \sum_{j=1}^n lcm(i,j)\). \(n\leq 10^{10}\) 分析 推式子 \[\begin{aligned} an ...