首页 > 其他分享 >FWT & FMT & 集合幂级数 题解集

FWT & FMT & 集合幂级数 题解集

时间:2023-04-04 19:34:44浏览次数:60  
标签:end 题解 FMT sum FWT mathcal prod align

CF449D Jzzhu and Numbers

简要题意

给定序列 \(\{a_n\}\),求有多少个子序列满足所有元素的按位与为 \(0\)。

题解

F1

考虑 FWT 的与卷积形式,构造序列 \(\{A_n\}\),使 \(A_i=\displaystyle\sum_{j\&i=i}a_i\),记 \(B_i=\displaystyle\sum_{b\in a}[(b_1\&b_2\&\cdots\&b_n)\&i=i]\),则有 \(B_i=2^{A_i}-1\),最后对 \(B_i\) 做一次 IFWT 或者容斥即可。

F2

考虑一个背包 \(f_{i,j}\) 表示考虑 \(a_1\) 到 \(a_i\),按位与结果为 \(j\) 的子序列数量。
有转移:

\[f_{i,j}=\sum_{k\&a_i=j}f_{i-1,k}+f_{i-1,j} \]

两端做 FWT:

\[\begin{align*} F_{i,j}&=\mathcal{F}(\sum_{k\&a_i=j}f_{i-1,k})+F_{i-1,j}\\ &=F_{i-1,j}G_{i-1,j}+F_{i-1,j}\\ &=F_{i-1,j}(G_{i-1,j}+1)\\ \end{align*} \]

其中 \(F_{i,\cdot}\) 是 \(f_{i,\cdot}\) 的 FWT,\(G_{i,\cdot}\) 是 \(g_{i,\cdot}\) 的 FWT,\(g_{i,j}=\begin{cases}1 & j=a_i\\0 & j\ne a_i\end{cases}\)。

简单计算可以得到同 F1 的结果,有 \(F_{n,\cdot}=A\)。

record

CF1119H Triple

简要题意

给定几个数:\(n,t,u,v,w\) 满足 值域 \(≤2^t\)。给出 \(n\) 个三元组 \((ai,bi,ci)\),表示有 \(x\) 个 \(a_i\)​,\(y\) 个 \(b_i\)​,\(z\) 个 \(c_i\)​。对于每个 \(k\in[0,2t−1]\),请求出从每组选出一个数的异或和为 \(k\) 的方案数。

题解

我们要求

\[ans=\prod ux^{a_i}+vx^{b_i}+wx^{c_i} \]

其中 \(\prod\) 为异或卷积。考虑进行 FWT,有

\[\begin{align*} \mathcal{F}(ans)&=\mathcal{F}(\prod ux^{a_i}+vx^{b_i}+wx^{c_i})\\ &=\prod\mathcal{F}(ux^{a_i}+vx^{b_i}+wx^{c_i})\\ &=\prod u\mathcal{F}(x^{a_i})+v\mathcal{F}(x^{b_i})+w\mathcal{F}(x^{c_i}) \end{align*} \]

第二行之后及下文的 \(\prod\) 为点积。
注意到 \(\mathcal{F}(x^k)=\sum_S(\pm1)x^S\),因此

\[[x^k]\mathcal{F}(ans)=\prod(\pm u\pm v\pm w) \]

总共只有八种情况,对于每一个 \(k\),算出这八种情况在乘积中各出现多少次,然后快速幂就做完了。

考虑到八种情况还是太臃肿了,我们进行一个小 trick:将 \(b_i,c_i\) 异或上 \(a_i\),然后令 \(a_i=0\),最终输出答案的时候再异或回来即可,故 \(\mathcal{F}(x^{a_i})=\mathcal{F}(x^\varnothing)=\sum x^S\),所以 \(u\) 的系数恒为 \(1\),只剩下四种情况

\[u+v+w,u-v+w,u+v-w,u-v-w \]

记他们出现的次数分别为

\[c_1,c_2,c_3,c_4 \]

接下来考虑如何计算。直接算显然是不切实际的,但是我们考虑只计算 \(v\) 的系数的和 \(p_v\),则有对于最终答案的 \(x^k\) 这一项,

\[\begin{align*} p_v&=\sum[x^k]\mathcal{F}(x^{b_i})\\ &=[x^k]\sum\mathcal{F}(x^{b_i})\\ &=[x^k]\mathcal{F}(\sum x^{b_i}) \end{align*} \]

对于 \(w\) 和 \(p_w\) 同理,再加上 \(c_1+c_2+c_3+c_4=n\),我们得到了三个线性无关的方程,考虑再找一个方程:
注意到 \(\mathcal{F}(x^{b_i})\mathcal{F}(x^{c_i})=\mathcal{F}(x^{b_i\oplus c_i})\) 为 \(v,w\) 系数的乘积记为 \(p_{v\oplus w}\),有

\[\begin{align*} p_{v\oplus w}&=[x^k]\mathcal{F}(\sum x^{b_i\oplus c_i}) \end{align*} \]

至此四个方程集齐:

\[\begin{align*} &c_1+c_2+c_3+c_4=n\\ &c_1-c_2+c_3-c_4=p_v\\ &c_1+c_2-c_3-c_4=p_w\\ &c_1-c_2-c_3+c_4=p_{v\oplus w} \end{align*} \]

解出来之后做个快速幂,然后 IFWT 就做完了。

record

标签:end,题解,FMT,sum,FWT,mathcal,prod,align
From: https://www.cnblogs.com/watware-cym/p/17287681.html

相关文章

  • 2023GPLT选拔题解
    看到没有题解我就给大家浅浅的写一篇吧,如果有错误,希望大家可以帮我指出来哦,创作不易,如果大家给个关注,点个赞就更好了  1:著名开源操作系统Linux的核心创始人Linus有一句经典名言:”Talkischeap.Showmethecode.“ 说出这句话时是2000年8月25日,那天有人在Linus的Linu......
  • 查看hbase表没有,但是新建却显示存在这个表的问题解决方案
    转:https://blog.csdn.net/leng91060404/article/details/106956315zookeeper数据存储及查看hbase信息1.zookeeper数据存储:1.1内存数据存储、磁盘数据存储.    内存数据存储:    数据模型是一棵树。包括所有节点路径,节点信息,ACL等。    DataTree:所有节点信息  ......
  • 洛谷 P3377 【模板】左偏树(可并堆)题解 左偏树模板题
    题目链接:https://www.luogu.com.cn/problem/P3377维护左偏树的同时还需要维护一个并查集。但是并查集也就一个find操作。pop的时候更新f[x]的操作很神奇。示例程序:#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e5+5;intn,m,op,x,y,val[m......
  • 【ACM算法竞赛日常训练】DAY10题解与分析【月月给华华出题】【华华给月月出题】| 筛法
    DAY10共2题:月月给华华出题华华给月月出题难度较大。......
  • C++奥赛一本通贪心题解
    C++奥赛一本通刷题记录(贪心)2017.11.15Bygwj1139177410书不见了,占坑待填。AnEasyProblempoj2453//贪心,将最右边第一个01改成10并将其右边的1都往右移到最低位#include<iostream>usingnamespacestd;intmain(){unsignedintn,x;while(cin>>n&&n){......
  • SEO常见问题解答:如何解决网站优化中遇到的难题和挑战
    SEO常见问题解答:如何解决网站优化中遇到的难题和挑战网站优化是提高网站在搜索引擎中排名和流量的重要手段,但是在优化过程中,往往会遇到各种难题和挑战,如何有效地解决这些问题,是每个网站运营者和SEO专家都需要掌握的技能。本文将针对一些常见的网站优化问题,给出一些解决方案和建议......
  • HDU动态规划题解目录
    ProblemA:MaxSum(HDU1003)   点击这里ProblemB:CommonSubsequence(HDU1159)    点击这里ProblemC:SuperJumping!Jumping!Jumping!(HDU1087)    点击这里ProblemD:HumbleNumbers(HDU1058)   点击这里ProblemE:MonkeyandBanana(HDU1069)    点击这里ProblemF:......
  • magento 问题解答 FQA
    1.IsthereawaybymysqltosetALLproductvisibilitytocatalog,search? 批量修改产品可见 openuptheeav_attributetableandfindtherowwhereattribute_code=visibility.Takenoteoftheattribute_id,mostlikelyitwillbe85.Alsotakenotetha......
  • Codeforces Round 862 (Div. 2) A-D题解
    比赛地址A.WeNeedtheZero题意:给出一个数组,对任意1<=i<=n,令bi=aix,问是否存在x,使得b<sub>1</sub>b2...bn=0Solution如果n为奇数,那么x一定存在,因为偶数个x异或得到的是0,直接令x=0(a<sub>1</sub>a2...an)即可如果n为偶数,那么x取任何值都不会影响结果,所以只用看a1a<sub>2</sub......
  • 个人向口胡题解(4/3)
    ABC295F题意:十进制下,给定两个正整数\(L、R\)和一个字符串\(S\),设\(F(x)\)为\(S\)在\(x\)中一共出现多少次,求\(\sum_{x=L}^{R}F(x)\)。如\(S=22,F(122)=1,F(123)=0,F(222)=2\)思路:可以按\(S\)在\(x\)中匹配的位置分别计算贡献,匹配的位置知道了,那么合法的数个数就是这位的贡献......