FWT整理
时间:2021-08-23
本文章向大家介绍FWT整理,主要包括FWT整理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
FWT
by AmanoKumiko
1.Or
\[A_i=∑_{j|i=i}Aj
\]
\[FWT[A]=merge(FWT[A_0],FWT[A_0]+FWT[A_1])
\]
\[UFWT[A]=merge(UFWT[A_0],UFWT[A_1]-UFWT[A_0])
\]
2.And
\[A_i=∑_{j\ and\ i=i}Aj
\]
\[FWT[A]=merge(FWT[A_0]+FWT[A_1],FWT[A_1])
\]
\[UFWT[A]=merge(UFWT[A_0]-UFWT[A_1],UFWT[A_1])
\]
3.Xor
\[i\oplus j=popcount(i\ and \ j)\ mod\ 2
\]
\[A_i=∑_{i\oplus j=0}A_j-∑_{i\oplus j=1}A_j
\]
\[FWT[A]=merge(FWT[A_0]+FWT[A_1],FWT[A_0]-FWT[A_1])
\]
\[UFWT[A]=merge(\frac{UFWT[A_0]+UFWT[A_1]}{2},\frac{UFWT[A_0]-UFWT[A_1]}{2})
\]
4.code
struct poly{
int len;
LL val[N];
void Or(int opt){
for(int mid=2;mid<len;mid<<=1){
for(int i=0;i<len;i+=mid){
F(j,i,i+mid/2)val[j+mid/2]+=val[j]*opt;
}
}
}
void And(int opt){
for(int mid=2;mid<len;mid<<=1){
for(int i=0;i<len;i+=mid){
F(j,i,i+mid/2)val[j]+=val[j+mid/2]*opt;
}
}
}
void Xor(int opt){
for(int mid=2;mid<len;mid<<=1){
for(int i=0;i<len;i+=mid){
F(j,i,i+mid/2){
LL l=val[j],r=val[j+mid/2];
val[j]=(l+r)/(opt==1?1:2);val[j+mid/2]=(l-r)/(opt==1?1:2);
}
}
}
}
}
原文地址:https://www.cnblogs.com/AmanoKumiko/p/15178009.html
- mac:在当前文件夹打开terminal终端
- 斯诺登研发黑客警报App上架 监测功能引发争议
- JMS + jboss EAP 6.2 示例
- Maven Compilation error [package org.testng.annotations does not exist]
- 查看jar包的jdk版本并降级
- ejb3: message drive bean(MDB)示例
- java提示找不到或无法加载主类
- 学Java有什么好方法?刻苦学技术让我最终成为自信的码农
- expect+scp传输文件发现文件丢失
- IBM WebSphere MQ 7.5基本用法
- QPS的计算
- Django----中间件详解
- linux 添加用户到sudo中
- 机器学习之白话adaboost元算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JAVA字符串如何像数组一样取字符?
- R语言泰坦尼克号随机森林模型案例数据分析
- 日常工作中的设计:解耦和封装
- 详解Gson的TypeToken原理
- 时间序列分解和异常检测方法应用案例
- 为什么机器学习应用交易那么难(上)
- 快速学习-sentinel动态规则扩展
- Git-git diff命令结果解析
- 快速学习-sentinel实时监控
- Git技术干货!工作中Git的使用实践和常用命令合集!
- gremlin-both()与bothE().bothV()的区别
- C# Time.deltaTime 增量时间
- Docker--docker ps 命令与结果解析
- Junit5系列-Junit5中@DisplayName自定义名称
- Junit5系列-Junit5中Assertions断言类