FWT
  • 2024-07-06[CF1392G] Omkar and Pies
    还是记一下这个trick吧,虽然很简单但是我认为十分有趣!本质上是MaximizetheDifference做法的扩展。(似乎有人称作RainFestivalTree???)这个题经过一些简单转化可以转化为这样一个问题:给定有二进制数序列\(A,B\),求\(\max_{r-l\gem}|A_l\oplusB_r|\)(\(|x|\)即二进制位下一的
  • 2024-05-26FWT & FMT
    CF662C首先有一个\(\mathcalO(2^nm)\)的做法。枚举每一行是否反转的状态\(s\),记\(g_i=\min(\operatorname{popcount}(i),n-\operatorname{popcount}(i))\),\(t_i\)表示第\(i\)列的状态。则答案为\(\min_s{\sum_{i=1}^mg_{s\operatorname{xor}t_i}}\)。发现这个东西
  • 2024-05-22学习笔记:集合幂级数与 FWT
    集合幂级数集合到整数设\(n\)元集\(A=a_1,a_2,\cdots,a_n\),定义\(A\)的幂集\(2^{A}=\{S\midS\subseteqA\}\)到整数集\(\mathbb{Z}\)的映射\(\text{id}\)为:若\(S=\{a_{i_1},a_{i_2},\cdots,a_{i_k}\}\),则\(\text{id}(S)=\sum_{j=1}^{k}2^
  • 2024-05-13FFT/FWT 相关理论自我复习
    下文下标一般从\(0\)开始。卷积:记的数组\(a,b\)在运算\(\circ\)下的卷积\(a\circb=c\),其中\(c_k=\sum\limits_{i\circj=k}a_ib_j\)。直接暴力计算卷积复杂度为\(O(n^2)\),其中\(n\)为数组长度。DFT-IDFT一般快速计算特殊卷积的方法为构造DFT变换:欲构造可逆的
  • 2024-05-07构造照亮世界——快速沃尔什变换 (FWT)
    博客园我的博客快速沃尔什变换解决的卷积问题快速沃尔什变换(FWT)是解决这样一类卷积问题:\[c_i=\sum_{i=j\odotk}a_jb_k\]其中,\(\odot\)是位运算的一种。举个例子,给定数列\(a,b\),求:\[c_i=\sum_{j\oplusk=i}a_jb_k\]FWT的思想看到FWT的名字,我们可以联想到之前学过
  • 2024-04-09FWT与FMT
    其实就是高维前缀和。FMT和FWT几乎一样,一个是分治一个是DP。FMT:有\(C_i=\sum\limits_{j\oplusk=i}A_jB_k\),其中\(\oplus\)为与、或。构造\(FMT[S]_i=\sum\limits_{j\oplusi=i}S_j\),有\(\begin{align*}&FMT[A]_x\timesFMT[B]_x\\&=\sum\limits_{i\oplusx=x}A
  • 2024-04-07日记 2024.4.7:子集卷积
    日记2024.4.7:子集卷积记号\(F(x)=\sum_{S\subseteq[n]}f_Sx^{S}\)是一个集合幂级数,其中\([n]=\{1,2,\cdots,n\}\),\(f_S\)是一个数组,然后写成像生成函数(其实是“形式幂级数”)的形式,\(x^S\)的这个指数是没意义的。FWT/FMT即两个集合幂级数的并、交、异或卷积运算。h
  • 2024-03-19$k$ 进制 FWT 小记
    上文:FWT快速沃尔什变换概念\(k\)进制的DWT本质上是二进制操作的一个扩展操作。原来的位运算也推广到了\(k\)进制上。\(\text{or}\)卷积定义两个数\(x_{1...k},y_{1...k}\)的\(k\)进制或运算定义为:\(z_i=\max(x_i,y_i)\)。换言之,在每个维度上取\(\max\)。分析
  • 2024-02-25位运算卷积
    位运算卷积快速求序列\(C\):\[C_i=\sum_{j\oplusk=i}A_jB_k\]其中\(\oplus=or,and,xor\)。类似FFT的思路,对于序列\(a\)构造新序列\(fmt(a)\),使得满足\(fmt(a*b)_i=fmt(a)_i\timesfmt(b)_i\)在位运算情况下,\(fmt(a)_i\)均可以表达成关于序列\(a\)的可逆线性变换,即
  • 2024-02-23FWT学习笔记
    FWT/快速沃尔什变换前言FWT是处理一类问题形如(\(\oplus\)指or,and,xor二元运算符)\[c_{i}=\sum_{i=j\oplusk}a_{j}b_{k}\]考虑像FFT一样,用\(O(n\logn)\)的复杂度构造出\(fwt\),在\(O(n)\)计算出\(fwt_a\timesfwt_b\),最后在\(O(n\logn)\)将\(fwt\)转化回去正题OR考虑构
  • 2024-02-19算法学习笔记(45): 快速沃尔什变换 FWT
    遗憾的是math里面一直没有很好的讲这个东西……所以这次细致说说。FWT的本质类似于多项式卷积中,利用ntt变换使得卷积\(\to\)点乘,fwt也是类似的应用。定义某种位运算\(\oplus\),那么fwt处理的位运算卷积形如:\[H=F*G\impliesH_k=\sum_{i\oplusj=k}F_iG_
  • 2024-02-13FWT学习笔记
    FWTFWT即位运算卷积,用来快速计算形如\(\sum\limits_{i\oplusj=k}f_ig_j\),其中\(\oplus\)表示某种位运算。设FWT(A)是幂级数A经过\(\rmFWT\)变换之后得到的幂级数。我们需要令其满足:\(A*B=C\LongleftrightarrowFWT(A)·FWT(B)=FWT(C)\)(点积)。\(\rmFFT\)是
  • 2023-12-31AGC034F 题解
    FWT入门题,很适合我这样的蒟蒻。首先我们可以轻松的根据转移条件写出来一个优美的函数\(T(i)=1+\sum_{j\oplusk=i}a_kT(j)\),边界为\(T(0)=0\)。这个方程属于转移带环的DP,处理方法一般是高斯消元,在这道题里会T飞。但是我们又注意到后边是一个美丽的异或卷积,因此可以考虑用
  • 2023-12-31[ABC212H] Nim Counting
    题目链接题目本质就是对一个多项式\(F\)进行等比数列求和得到\(G\)(\(F_i\)表示\(i\)在序列\(A\)中的出现次数),求\(G\)所有下标\(>0\)的位置的权值和。显然,\(M\)固定就可以直接做了。但\(M\)不固定,所以我们只能暴力枚举\(M\)并进行\(N\)次FWT卷积。复杂度显
  • 2023-12-25CodeForces 1906K Deck-Building Game
    洛谷传送门CF传送门UNR#2黎明前的巧克力。枚举两个人选的卡的并集\(S\),那么当\(\bigoplus\limits_{i\inS}a_i=0\)时\(S\)有贡献\(2^{|S|}\)。考虑将\(2^{|S|}\)分摊到每个元素上,也就是每个元素有\(2\)的贡献,然后把这些贡献乘起来。所以题目其实是想让我们算
  • 2023-12-24FWT 学习笔记
    解决的问题\(\rmFWT\)是用来解决位运算卷积的。啥是位运算卷积呢?常见的多项式乘法可以认为是一种加法卷积,即\(A_{i+j}=\sumB_i\timesC_j\)。位运算卷积就是\(A_{i\\text{Or/And/Xor}\j}=\sumB_i\timesC_j\)。主要思想现在以异或卷积为例,默认\(n=2^k\)。回忆
  • 2023-12-06全局平衡二叉树学习笔记 && [SDOI2017]切树游戏解题报告
    首先,任何一个卡树剖的出题人都很没有素质前言2023年8月22日,XDFnoip模拟赛场上,神犇liuhangxin自己发明了矩阵乘法维护FWT,可是出成绩的时候发现本题挂了30分。2023年9月22日,菜鸡cool_milo看到了liuhangxin的题解,但是由于太菜,并没有看懂。2023年10月22日,菜
  • 2023-12-03期望概率
    0.前情提要别想翻盘了,赶紧搞你那whk去吧。学点期望概率以后用。1.一些需要知道的有关概率约定\(P(A)\)为\(A\)事件发生的概率。条件概率\(P(A|B)\)表示,在\(B\)已经发生的情况下,\(A\)事件发生的概率。由条件概率的定义,可以得到算式:\[P(A|B)=\frac{P(A\capB)
  • 2023-11-16「总结」同或卷积
    前置知识:FWT的另一种理解FWT的另一种理解,文中使用的系数矩阵\(F\)似乎不太标准,本文中认为\(\mathscr{F}(\bma)=F\times\bma\)。摘要:FWT使用的线性变换的系数矩阵\(F\)需要满足\(F(i,x\oplusy)=F(i,x)\timesF(i,y)\)。同或卷积因为同或运算在每一位上是独立的,所以
  • 2023-11-16FWT 的另一种理解
    思路若要\(\oplus\)卷积\(a\)和\(b\)(此处\(\oplus\)可以是任意运算),我们希望存在一个线性变换\(\mathscrF\),满足:\[c_k=\sum_{i\oplusj=k}a_ib_j\Longleftrightarrow\mathscrF(a)\cdot\mathscrF(b)=\mathscrF(c)\]若求\(\mathscrF(x)\)和\(\maths
  • 2023-11-01CF908H New Year and Boolean Bridges
    这说明你那破子集卷积不是万能的。显然题目要求的图\(G'\)是弱联通的,考虑给出的图\(G\)中两个点\(i,j\)之间\(G_{i,j}\)的条件转化为:\(G_{i,j}=\mathttA\),说明\(i\)能到\(j\)且\(j\)能到\(i\),则\(i,j\)在\(G'\)的同一个强连通分量中。\(G_{i,j}=\mathttO
  • 2023-10-22快速莫比乌斯/沃尔什变换 (FMT/FWT)
    仅供学习。给定长度为\(2^n\)两个序列\(A,B\),设\[C_i=\sum_{j\oplusk=i}A_j\timesB_k\]分别当\(\oplus\)是or,and,xor时求出\(C\)or\[c_{i}=\sum_{j|k\ini}a_{j}b_{k}\]定义\(fwt[a]_i=\sum_{j\ini}a_j\)显然$$\begin{aligned}fwt[a]\timesf
  • 2023-09-25QOJ 5089
    你细品巨大多太阳的题解,虽然看不懂,但是发现挺有道理的。容易发现,一个无向图是可环覆盖图,当且仅当所有点的度数为偶数。所以将一条边\((u,v)\)看作集合\(\{u,v\}\),相当于求选出\(i\in[0,m]\)个集合\(\{u_i,v_i\}\),其对称差为\(\varnothing\)的方案数。考虑集合幂级数,由
  • 2023-09-15FWT 小记
    卷积通用定义:\[\text{令}F=G\timesH\text{。}\\\text{则有}f_i=\sum\limits_{x=0}^{n-1}\sum\limits_{y=0}^{n-1}g_xh_y[x\oplusy=i]\]若\(\oplus\)为\(+\),就是多项式乘法,可以使用FFT等手段解决。当\(\oplus\)为位运算时,则属于位运算卷积,可用FWT/FMT
  • 2023-07-20AGC034F RNG and XOR
    类似随机游走,令\(f_i\)为第一次操作到\(i\)的期望操作次数,\(p_i\)为每次操作数为\(i\)个概率,显然有:\[f_i=\begin{cases}0&i=0\\1+\sum\limits_{j\;\text{xor}\;k\=\i}p_jf_k&i\neq0\end{cases}\]显然可以高斯消元,不过是\(O(2^{3n})\)的,寄飞。考虑到转移过程中有