Notes of fwt
昨天考试由于不会fwt而爆炸,所以今天搞了一下fwt……话说这玩意的普及程度已经很高了.
fwt,快速沃尔什变换,可以用于位运算卷积的优化,是一种线性变换,所以就会有许多好的性质(eg:可以直接模,可以修改运算等). & | ^ 的变换定义与方法是基础,在此基础上的扩展与运用是重要的地方.
HZOI #1572.宇宙序列
notes:
这就是造成我考试爆炸的考试题,见Contest Record
UOJ #310.【UNR #2】黎明前的巧克力
notes:
感觉比较灵活的一道题.首先写出裸dp,之后会发现答案就是许多数组连续进行fwt,这个时候经过观察会发现,每个数组变换后每个位置上不是-1就是3这个时候我们可以对于每一位进行单独考虑,去算与这一位&之后有奇数位的数的个数,以及与这一位&之后有偶数位的数的个数,我们可以用fwt计算这个,然后计算每一位的最后答案,最后再ifwt回去.
思想:
I.感觉在fwt里利用对应位相乘所导致的每一位互相独立是许多fwt题目中解题的关键.
II.在这个题目中观察性质从而改变问题的思路很巧妙啊.
UOJ #267.【清华集训2016】魔法小程序
notes:
就是对于|运算fwt的扩展,看懂题意之后其实就是个加工板子的过程.不过,感觉那个数据范围给的好迷啊,为什么int就可以呢……不会证明……
UOJ #300.【CTSC2017】吉夫特
notes:
题目比较傻逼,首先可以写出n^2裸dp来,然后用Lucas定理可以证明出,一个组合数为奇数的充要条件,然后就可以枚举子集来dp了,是O(3^18).
实际上这题可以做得更加优秀.
首先这题可以进行序列上的分块,做到O(2^27).
然后这道题还可以用二进制分块来动态维护&运算fwt数组,从而做到O(6^9).
思想:用Lucas定理来进行组合数相关的证明(我反正是没想到这玩意)、分块思想(序列分块、二进制分块).
技巧:枚举子集是i=(i-1)&x,枚举父集是i=(i+1)|x.
UOJ #348.【WC2018】州区划分
notes:
先写出O(3^n)的傻逼dp,然后开始优化.
发现转移是子集卷积的形式,于是考虑进行子集卷积,然后这题就完事了.
子集卷积:
f(i)=sigma [j|k=i,j&k=0] g(j)*h(k);
转化为f(c,i)=sigma [j|k=i,|j|+|k|=c] g(j)*h(k)
这个时候我们原来的子集卷积,就变为了二维卷积(也就是加法卷积套|运算卷积),显然第一维卷积可以直接计算,第二维卷积fwt就可以了,于是子集卷积的复杂度从O(3^n)优化到了O(n^2*2^n).
Notes of fwt的更多相关文章
- ASP.NET Core 1.1.0 Release Notes
ASP.NET Core 1.1.0 Release Notes We are pleased to announce the release of ASP.NET Core 1.1.0! Antif ...
- Android Weekly Notes Issue #237
Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- FWT与High dick(划掉改成Dimensional) Fourier Transform
我们大家都知道xor卷积有个很好的做法:FWT.FWT的变换形式是很好看的 // 说明一下Vector可以向量化运算,也可以当做数组来slice与concat Vector tf(A,2^n){ Ve ...
- Codeforces663E Binary Table(FWT)
题目 Source http://codeforces.com/contest/663/problem/E Description You are given a table consisting o ...
随机推荐
- HDU 6438
Problem Description The Power Cube is used as a stash of Exotic Power. There are n cities numbered 1 ...
- mysql 5.5 zip配置安装
1.解压2.创建option文件 --defaults-file=../my.ini [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mys ...
- AWS/阿里/Azure,云厂商价格大PK
以下选取热门型号Linux虚拟机,AWS和Azure的虚拟机配置包括本地SSD临时盘,阿里云虚拟机不带本地SSD临时盘,而且需要另配网卡带宽.以下价格为人民币含税(6%) 按使用量网站直接付费购买(O ...
- 1014-C程序的语法树
- ZOJ 1842 Prime Distance(素数筛选法2次使用)
Prime Distance Time Limit: 2 Seconds Memory Limit: 65536 KB The branch of mathematics called nu ...
- 做更好的自己 ——读《我是IT小小鸟》有感
转眼间大一已经过了一大半了,到了大学,才发现初高中时父母所说的“到了大学你就轻松了···”都是骗人的.但我脑海里却一直被这个观点所支配,以至于我在大一上学期里无所事事,不知道干些什么.学习也没重视,分 ...
- HttpWebRequest下载文件,乱码问题解决方案
写在前面 今天之所以会总结HttpWebRequest下载文件,主要是因为在使用该类下载文件的时候,有些地方需要注意一下,在实际的项目中遇到过这种问题,觉得还是有必要总结一下的.在下载文件时,最常见的 ...
- Websphere Application Server 环境配置与应用部署最佳实践
在发布一个运行于 WebSphere Application Server 的 J2EE 应用之前,对服务器进行配置和部署应用是必不可少的一个过程,这个过程是非常复杂的.WAS 为用户提供了可视化的管 ...
- 桥接,NAT,Host Only的区别
桥接,NAT,Host Only的区别 一.Brigde——桥接 :默认使用VMnet0fish批注:只要在虚拟机中将IP设对,即使宿主机的IP是错的,也可以通信.但是如此物理网卡被禁用了,则不能 ...
- Django之contenttypes的应用
Django contenttypes 应用 简介 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 每当我 ...