摘要: dsu on tree 树上启发式合并。我并不知道为什么要叫做这个名字。。。 干什么的 可以在$O(n\log n)$的时间内完成对子树信息的询问,可横向对比把树按$dfs$序转成序列问题的$O(n\sqrt n)$莫队算法。 怎么实现 当$dfs$到一个点$u$,执行以下操作: 1、递归处理所有轻 阅读全文
posted @ 2018-05-21 20:30 租酥雨 阅读(593) 评论(0) 推荐(3) 编辑
摘要: "luogu" 题意 你有一个$n m$的$01$矩阵。你可以把任意一行或者一列的$01$取反。求矩阵中最少的$1$的数量。 $n\le20,m\le10^5$ sol 很自然地有一个$O(2^nm)$的暴力:枚举横行的取反情况,然后纵列就取$01$数量较少的一者。 我们记状态$x$在原矩阵中的出现 阅读全文
posted @ 2018-05-21 17:17 租酥雨 阅读(419) 评论(0) 推荐(1) 编辑
摘要: "vjudge" 题意 两个数组$\{a_i\}$和$\{b_i\}$,求从中分别选出两个数或运算结果为$x$的方案数。 sol 裸的FWT。 code cpp include include include using namespace std; int gi(){ int x=0,w=1;ch 阅读全文
posted @ 2018-05-21 16:54 租酥雨 阅读(230) 评论(0) 推荐(0) 编辑
摘要: "bzoj" 题意 求选出$n$个$[1,m]$之间的质数使其异或和为$0$的方案数。 $n\le10^9,m\le50000$ sol 设$f_{i,j}$表示已经选了$i$个数异或和为$j$的方案数。 直接$dp$转移复杂度$O(m^2n)$ 发现$n$次的转移是一样的可以快速幂优化$O(m^2 阅读全文
posted @ 2018-05-21 16:51 租酥雨 阅读(186) 评论(4) 推荐(0) 编辑
摘要: 快速沃尔什变换$FWT$ 是一种可以快速完成集合卷积的算法。 什么是集合卷积啊? 集合卷积就是在集合运算下的卷积。比如一般而言我们算的卷积都是$C_i=\sum_{j+k=i}A_j B_k$,而集合卷积计算的就是$C_i=\sum_{j\otimes k=i}A_j B_k$,其中$\otimes 阅读全文
posted @ 2018-05-21 16:43 租酥雨 阅读(627) 评论(4) 推荐(3) 编辑