首页 > 其他分享 >FWT与FMT

FWT与FMT

时间:2024-04-09 13:55:32浏览次数:25  
标签:limits FMT FWT oplus sum DP

其实就是高维前缀和。FMT 和 FWT 几乎一样,一个是分治一个是 DP。
FMT:有 \(C_i=\sum\limits_{j\oplus k=i}A_jB_k\),其中 \(\oplus\) 为与、或。
构造 \(FMT[S]_i=\sum\limits_{j\oplus i=i}S_j\),有
\( \begin{align*} &FMT[A]_x\times FMT[B]_x \\ &=\sum\limits_{i\oplus x=x} A_i\sum\limits_{i\oplus x=x} B_j \\ &=\sum\limits_{k\oplus x=x}\sum\limits_{i|j=k}A_iB_j \\ &=\sum\limits_{k\oplus x=x}C_k \\ &=FMT[C]_x \end{align*} \)
于是进行一次高维前缀和,计算出 \(FWT[A]\) 与 \(FWT[B]\),每个位置相乘得到 \(FWT[C]\),然后再差分回来。
FMT 因为是 DP 形式,所以更加灵活, \(N\) 无需为 \(2\) 的次方。

FWT:有 \(C_i=\sum\limits_{j\oplus k=i}A_jB_k\)。
构造 \(FMT[S]_i=\sum\limits_{j\oplus i=i}S_j\),其中 \(\oplus\) 为与、或,有

标签:limits,FMT,FWT,oplus,sum,DP
From: https://www.cnblogs.com/umieR/p/18123815

相关文章

  • Golang标准库fmt深入解析与应用技巧
    Golang标准库fmt深入解析与应用技巧前言fmt包的基本使用打印与格式化输出函数Print系列函数格式化字符串格式化输入函数小结字符串格式化基本类型的格式化输出自定义类型的格式化输出控制格式化输出的宽度和精度小结错误处理与fmt使用fmt.Errorf生成错误信息fmt包与错......
  • 3.Go 语言 定义变量、fmt 包、Print、Println、Go 语言注释
    Go语言定义变量、fmt包、Print、Println、Printf、Go语言注释1、Go语言定义变量这里我们为了演示代码期间给大家先简单介绍一下变量,后面的教程还会详细讲解。关于变量:程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是......
  • $k$ 进制 FWT 小记
    上文:FWT快速沃尔什变换概念\(k\)进制的DWT本质上是二进制操作的一个扩展操作。原来的位运算也推广到了\(k\)进制上。\(\text{or}\)卷积定义两个数\(x_{1...k},y_{1...k}\)的\(k\)进制或运算定义为:\(z_i=\max(x_i,y_i)\)。换言之,在每个维度上取\(\max\)。分析......
  • golang标准库之 fmt
    目录fmt库1.获取输入(1)fmt.Scan(常用)(2)fmt.Scanln(常用)(3)fmt.Scanf2.print、println、printf输出3.Sprint(了解即可)4.Errorf(了解即可)5.格式化占位符(1)通用占位符(2)布尔型占位符(3)整型占位符(4)浮点数与复数占位符(5)字符串和[]byte占位符(6)指针占位符(7)宽度标识符(8)其他fmt库fmt包实现了......
  • FWT学习笔记
    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考虑构......
  • Golang fmt包的使用
    摘要Golang是一种简洁、高效的编程语言,其标准库中的fmt包是开发者经常使用的一个重要工具。本文将深入探究Golangfmt包的使用,包括格式化输出、输入扫描、错误处理以及自定义格式化等方面的内容,帮助读者更好地理解和使用该包。 引言Golang的fmt包提供了一系列函数,用于格式化......
  • 算法学习笔记(45): 快速沃尔什变换 FWT
    遗憾的是math里面一直没有很好的讲这个东西……所以这次细致说说。FWT的本质类似于多项式卷积中,利用ntt变换使得卷积\(\to\)点乘,fwt也是类似的应用。定义某种位运算\(\oplus\),那么fwt处理的位运算卷积形如:\[H=F*G\impliesH_k=\sum_{i\oplusj=k}F_iG_......
  • fmt、变量、常量
    fmt包fmt包主要用于打印数据,常用的有Printf、Print、Printf//文件所属包packagemain//导入fmt包,主要用于打印数据import"fmt"funcmain(){ fmt.Println("golang1","golang2") fmt.Print("golang1","golang2") fmt.Printf("golang&q......
  • FWT学习笔记
    FWTFWT即位运算卷积,用来快速计算形如\(\sum\limits_{i\oplusj=k}f_ig_j\),其中\(\oplus\)表示某种位运算。设FWT(A)是幂级数A经过\(\rmFWT\)变换之后得到的幂级数。我们需要令其满足:\(A*B=C\LongleftrightarrowFWT(A)·FWT(B)=FWT(C)\)(点积)。\(\rmFFT\)是......
  • 【pwn】axb_2019_fmt32 --格式化字符串漏洞进一步利用
    照例检查程序保护情况堆栈不可执行,再导入ida看一下代码逻辑如上图此处代码有格式化字符串漏洞先找出偏移可以发现偏移是8那么我们可以利用printf泄露出libc地址,如何修改printf_got表为system的地址,然后再传入/bin/sh就可以getshellexp:frompwnimport*fromLibcSearc......