首页 > 其他分享 >QOJ 5089

QOJ 5089

时间:2023-09-25 10:44:44浏览次数:43  
标签:5089 limits text sum cap varnothing FWT QOJ

你细品巨大多太阳的题解,虽然看不懂,但是发现挺有道理的。

容易发现,一个无向图是可环覆盖图,当且仅当所有点的度数为偶数。所以将一条边 \((u,v)\) 看作集合 \(\{u,v\}\),相当于求选出 \(i\in [0,m]\) 个集合 \(\{u_i,v_i\}\),其对称差为 \(\varnothing\) 的方案数。

考虑集合幂级数,由于有 \(i\) 的限制需要带一个形式幂级数的元,即令 \(F(x,y)=\prod\limits_{i=1}^m(1+x^{\{u_i,v_i\}}y)\),那么 \(\text{ans}_i=[x^{\varnothing}y^i]F(x,y)\)。\(x\) 的乘法定义为对称差(异或)卷积,而 \(y\) 的乘法定义为加法卷积。

将 \(x^S\) 的系数当做关于 \(y\) 的形式幂级数,将 \(F(x,y)\) 简写为 \(F\),则我们只需要求出 \([x^{\varnothing}]F\),考虑 \([x^{\varnothing}]F=\frac{1}{2^{n}}\cdot \sum\limits_{S}[x^S]\text{FWT}(F)\):

\[[x^{S}]\text{FWT}(F)=\prod\limits_{i=1}^m[x^S]\text{FWT}(1+x^{\{u_i,v_i\}}y) \]

注意到 \(\text{FWT}\) 算子的定义 \([x^S]\text{FWT}(F)=\sum\limits_{T}(-1)^{|S\cap T|}[x^T]F\)。由于 \(T=\varnothing\) 时 \((-1)^{|S\cap T|}=1\),所以 \([x^{S}]\text{FWT}(1+x^{\{u_i,v_i\}}y)=1+y/1-y\)。

于是 \([x^S]\text{FWT}(F)\) 一定能写成 \((1+y)^{m-a_S}(1-y)^{a_S}\) 的形式。考虑到 \(a_{S}\) 的意义为 \(|\{u_i,v_i\}\cap S|=1\) 的 \(i\) 的个数,容易发现只有 \(O(m)\) 种,这启示我们对于每个 \(i\in [0,m]\) 计数 \(f_i\) 表示有多少个 \(S\) 的 \(a_{S}=i\),答案就是 \(\sum\limits_{i=0}^m(1+y)^{m-i}(1-y)^if_i\)。

考虑如何求出 \(f_i\)。枚举点 \(u\),每次选择在 \(S\) 中加入/不加入点 \(u\),并动态维护此时的 \(a_S\)。那么 \(a_S\) 增加所有 \(u\in S\) 且 \(v\neq S\) 的边的个数即可。

复杂度 \(O(2^n+\text{poly}(m))\)。

标签:5089,limits,text,sum,cap,varnothing,FWT,QOJ
From: https://www.cnblogs.com/Ender32k/p/17727391.html

相关文章

  • QOJ61 Cut Cut Cut! 题解
    题面。题解假设\(1\)号点有\(d\)条出边,给\(d\)条出边赋\(d\)个独立的单位向量,接下来,每个出边记作入边的随机线性组合,那么对于第\(i\)个点,答案就是入边生成的线性空间的秩。正确性证明:对于每个点考虑,假设现在考虑\(i\)号点,将其入边集合记作\(E1_{i}\),出边集合记......
  • QOJ # 7106. Infinite Parenthesis Sequence
    题面传送门为什么全场切我不会?为什么全场切我不会?为什么全场切我不会?首先因为题目中要求左括号个数,我们就来关注一下左括号。对于一个左括号,假设它右边是右括号,那么这个左括号就会往右走,否则不会往右走。随便选个左括号开始标号,往左为负,往右为正,设\(p(k,i)\)表示第\(i\)个......
  • QOJ # 5573. Holiday Regifting
    题面传送门感觉有点奇妙。首先一个基础的想法就是一个一个往下推,维护每个数往下推的次数,统计当前数在前面的所有数一次归零后会加几次,然后计算这个数需要前面几轮归零,这样将这些系数乘起来就是需要归零的次数了。但是现在有一个问题就是前面每个数往下推的次数可能很大,这东西存......
  • QOJ # 6355. 5
    题面传送门设题目中给出的\(1\)的个数占总数的\(\frac{m}{k}\)。考虑一个最朴素的\(O(n^3)\)dp:设\(f_{i,j}\)表示选择了\(i\)个,总和为\(j\)是否存在。当我们用\(j-i\)代替\(j\)的时候显然答案不会被改变,而好处在于可以把\(1\)拉出来单独考虑。当我们不考虑\(1......
  • QOJ # 6354. 4
    题面传送门我是傻逼。首先你看这东西长得一脸四元环计数那类东西,于是先给边定向,这样子的话就形成了一张图,每个点只有\(O(\sqrtm)\)条出边。现在我们枚举一个三元环,要计算三个点都指向的点的个数。直接做有\(O(m\sqrtm)\)个三元环,每个三元环需要\(O(\frac{m}{\omega})\)......
  • QOJ # 6508. This is not an Abnormal Team!
    题面传送门感觉网络流学艺不精,被薄纱了/kk原题意是最少一个点的链,在此基础上最少三个点的链,比较难去用网络流考虑。换个思路:先最大匹配出两点链,然后让最多两点链合并上一个单点变成三点链。这样显然单点最少,并且保证了不会有\(3\)个两点链合并成两个三点链,所以这样是符合题目......
  • QOJ # 6504. Flower's Land 2
    题面传送门感觉,非常高妙的随机化!考虑怎么判定一个序列合法,将每种颜色的奇数位置看成左括号,偶数位置看成右括号,则一个序列合法当且仅当其括号序列合法。现在带修,我们维护的东西需要满足如下性质:可逆:将相邻奇数位的信息和偶数位的信息合并需要等于单位元。有结合律:不然没有办......
  • QOJ875 Arrange The Piranhas
    题意:大小为\(1\timesn\)的棋盘上有一些棋子,一次可以选择一个空的位置,将左边第一个棋子往该位置拉一格,右边第一个往这拉一格,操作完这个位置也必须是空的(也就是左右至少得有一格的空隙),问能不能把所有棋子变成目标状态。将棋子位置的前缀和\(s_i\)求出,每次操作相当于将一个\(......
  • 【大联盟】20230701 传送(b) QOJ1878 【No Rest for the Wicked】
    题目描述here。题解考虑一条路径上只有\(a\)的前缀\(\max\)才是有用的,不妨考虑按照前缀\(\max\)来划分。可以发现,这些连续段直接存在单向边连接。现在,我们考虑如何求出这些连续段。一个点\(i\)可以接在前缀\(\max\)为\(a_j\)的后面当且仅当\(a_j\lea_i\leb_j\)......
  • 【大联盟】20230706 Interesting DS Problem(interesting) QOJ2559 【Endless Road】
    题目描述here。题解首先,我们对所有区间离散化,删除一个区间时,我们暴力删除内部还存在的子区间。如果没有区间包含是好做的,因为我们删除一个子区间时,将区间按照左端点排序,可发现包含这个子区间的区间是连续的一个区间。现在考虑有区间包含怎么做。我们考虑维护出当前所有不包含......