1.前言(废话)
记得一年半之前做SRM518 Nim的时候还不知道FWT,当时自己用分治完美的水过去了。然后昨天的牛客有一道题,是说nim博弈中有n堆石子,请问最多取出多少堆石子可以让先手必败。当时竟然没思路QAQ???想了想使劲往字典树靠边靠不上去QAQ,然后就没想出来!!!
想当年自己手推FWT或运算,真的感叹岁月是把杀猪刀!于是怒写这篇博客QAQ把这个算法总结一下QAQ
(其实我觉得这变换竟然也有名字真的很神奇QAQ)
2.FWT简介
沃尔什转换(Walsh Transform)是在频谱分析上作为离散傅立叶变换的替代方案的一种方法。
——wiki百科
其实这个变换在信号处理中应用很广泛,fft是double类型的,但是walsh把信号在不同震荡频率方波下拆解,因此所有的系数都是绝对值大小相同的整数,这使得不需要作浮点数的乘法运算,提高了运算速度。
所以,FWT和FFT的核心思想应该是相同的。都是对数组的变换。我们设数组A经过快速沃尔什变换之后记作
那么FWT核心思想就是:
我们需要一个新序列C,由序列A和序列B经过某运算规则得到,即。我们先正向得到