【学习笔鸡】快速沃尔什变换FWT OR的FWT 快速解决: \[C[i]=\sum_{j|k=i} A[j]B[k] \] FWT使得我们 \[FWT(C)=FWT(A)*FWT(B) \] 其中\(*\)是点积,就是对应位置乘起来。 而对于\(orFWT\), \[C'[i]=FWT(C)[i]=\sum_...
来学点好玩的。 引入 我们也许学过,\(FFT\) 可以解决一类卷积: \[C_i=\sum^{k+j=i} A_iB_j \] 现在我们稍微变一下式子: \[C_i=\sum^{i=k \And j} A_kB_j \] \[C_i=\sum^{i =k\mid j} A_kB_j \] \[C_i=\sum^{i...
前言 学多项式怎么能错过\(FWT\)呢,然而这真是个毒瘤的东西,蒟蒻就只会背公式了\(\%>\_<\%\) 或卷积 \[\begin{aligned}\\ tf(A) = (tf(A_0), tf(A_1) + tf(A_0))\\ utf(A) = (utf(A), utf(A_1) - utf(A_0...
模板题 ## [ 传送门 ](https://www.luogu.org/problemnew/show/P4717) ``` #include #define ll long long #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)'9'){if(ch=='-')f=-1;ch=getchar();} w...
FWT能解决什么 有的时候我们会遇到要求一类卷积,如下: Ci=∑j⊕k=iAj∗Bk\large C_i=\sum_{j⊕k=i}A_j*B_kCi=j⊕k=i∑Aj∗Bk此处乘号为普通乘法,⊕⊕⊕表示一种位运算,如 与 and(&)、and(\&)、and...
解决涉及子集配凑的卷积问题 一、介绍 1.基本用法 FWT快速沃尔什变换学习笔记 就是解决一类问题: $f[k]=\sum_{i\oplus j=k}a[i]*b[j]$ 基本思想和FFT类似。 首先转化成为另一个多项式$FWT(A),FWT(B)$ 使得:$FWT...
FWT快速沃尔什变换学习笔记 1、FWT用来干啥啊 回忆一下多项式的卷积\(C_k=\sum_{i+j=k}A_i*B_j\) 我们可以用\(FFT\)来做。 甚至在一些特殊情况下,我们\(C_k=\sum_{i*j=k}A_i*B_j\)也能做(SDOI2015 序列统计)。...
题面 题解 我们会发现,如果单独的一列或一行,它的答案是O1确定的,如果确定了每一行是否变换,那么最后的答案也就简单了许多, 如果确定了行的变换状压下来是x(即x的i位表示第i行是否变换,理解就行),那么...
这是我的第一篇学习笔记,如有差错,请海涵... 目录 引子 卷积形式 算法流程 OR卷积 AND卷积 XOR卷积 模板 引子 首先,考虑这是兔子 数一数,会发现你有一只兔子,现在,我再给你一只兔子 再数一数,会发现什...
题面 题解 这是一道FWT和子集卷积的应用题。 我们先设 cnt[x] 表示 Si = x 的 i 的数量,那么 这里的Nab[x]指满足条件的 Sa|Sb=x、Sa&Sb=0 的(a,b)二元组数量,这个可以通过子集卷积快...