【笔记】计数选讲:容斥、LGV、SPS、GF 2024.8.2

今天写的很乱。

[HEOI2013] SAO

容斥。因为我们已经知道父亲 \(<\) 儿子时的情况(\(n!/\prod_i siz_i\),也适用于森林),那么儿子 \(<\) 父亲的情况就容斥掉,无限制的就当作那条边不存在。树上背包,记录当前节点为根的连通块大小和容斥系数的积。

*[ECFinal23A] DFS Order 4

转写为:统计多少个有根树,满足

  • 父亲小于儿子;
  • 儿子之间有序;
  • 节点要比它的上一个兄弟的最后一个儿子小。

显然和 dfn 序形成双射。在边上画不等号,容斥,尝试转化为上一题的 \(n!/\prod_i siz_i\)。钦定一些边断掉,改成根向树拓扑序计数的形式,统计 \(1/\prod_i siz_i\) 带上一堆容斥系数。转移可以按照深度和子树大小转移,由深至浅,由小到大。

[AGC020F] Arcs on a Circle

钦定最长的弧,破环为链。将随机坐标拆开成随机整数部分和随机小数部分,枚举小数部分的大小关系(\((n-1)!\) 种情况出现概率相同),然后状压 DP。因为已经知道小数部分的大小关系,于是可以知道两端弧是否交了。

[AGC036F] Square Constraints

画一个平面直角坐标系,相当于在一个扇形里选出排列。已经知道,如果每个位置能选的是一段前缀 \(a_1\leq a_2\leq\cdots\leq a_n\),那么答案就是 \(\prod_i (a_i-i+1)\)。所以尝试将排列左半边的区间限制容斥成前缀限制,需要先钦定有多少个被容斥成最长条的,然后就可以知道排名了。\(O(n^3)\)

*无标题

对每个 \(x,y\),求有多少个长度为 \(n\) 的排列,满足有 \(x\)\(p_i>i\),有 \(y\)\(p_i>p_{i+1}\)\(n\leq 60\)

考虑每一个大于的连续段,被 \(p_i=i\) 的直线切开两半,发现这些数能选的又是一个区间,也可以沿用上一题的套路容斥。大小关系按照从小到大和从大到小同时。同一段的方案数可以选完再除一个阶乘。

好像后面还要优化啊

*[AGC039F] Min Product Sum

先找所有最小值,钦定它们所在的行列,划去它们,递归到子问题。可以 dp。可以对方案数容斥,\((\min=v)=(\min\geq v)-(\min\geq v+1)\)。可以分步 dp,将过程拆成多步。最终可以做到 \(O(n^4)\)

好像不是这个东西啊

*[UNR #7] 璀璨宝石

UOJ NOI Round #7 题解 - 博客 - qingyu的博客

完全掉线

这里有一个 LGV 题

\(n\times n\) 网格内填 \(1\sim n\) 使得每个格子的数小于等于其上面的格子和其右边的格子。求方案数。

看成不互穿的路径,这些路径将整个矩形划分,第 \(i\) 条路径和第 \(i+1\) 条路径之间填上权值 \(i+1\)。不互穿路径太草了,第 \(i+1\) 条路径向右上两个方向平移 \(i\) 单位长度,然后就能 LGV Lemma。

*[QOJ3082] Ascending Matrix

不会

[2021 集训队互测 Round 2] Imbalance

\(k\leq 20\) 运行状压 DP。

\(k>20\),将 \(1\) 当作 \(+1\)\(0\) 当作 \(-1\)。首先发现如果 \(a[1,k]>0\) 那么以后所有长度为 \(k\) 的区间都有这个性质(否则会跨过去)。转为格路,看作这样的循环路径:

这个挂了看下面

这个挂了看上面

只要这些路径都不交就合法了。枚举起点位置,计算 \(O(k^{n/k})\) 个 LGV Lemma。

集合幂级数但是 mex 卷积

\(f(x, y)\) 接受两个三进制数,输出一个三进制数,其第 \(i\) 位是 \(x\) 的第 \(i\) 位与 \(y\) 的第 \(i\) 位的 \(\text{mex}\)

给定两个长度为 \(3^n\) 的数组 \(a, b\),求 \(c_k=\sum_{f(i, j)=k}a_ib_j\) 每一项的值。\(n\leq 11\)

\[\begin{aligned} c_0&=a_1b_1+a_1b_2+a_2b_1+a_2b_2=(a_1+a_2)(b_1+b_2)\\ c_1&=a_0b_0+a_0b_2+a_2b_0=(a_0+a_2)(b_0+b_2)-a_2b_2\\ c_2&=a_0b_1+a_1b_0=(a_0+a_1+a_2)(b_0+b_1+b_2)-c_0-c_1 \end{aligned} \]

\[F(a_0, a_1, a_2)\to (a_1+a_2, a_0+a_2, a_2, a_0+a_1+a_2) \]

点乘一下再变到答案:

\[\implies G(c_0, c_1+a_2b_2, a_2b_2, c_2+c_0+c_1)\to (c_0, c_1, c_2) \]

\(O(4^n)\) 解决。

[2022-2023 集训队互测 Round 8] 环覆盖

欲求

\[[x^0y^k]\prod_{(u, v)\in E}(1+x_ux_vy) \]

\(x\) 上做异或的 FMT,已知

\[FMT(A)_i=\sum_{j}(-1)^{popc(i\&j)}a_j \]

所以

\[[x^S]FMT(\prod_{(u, v)\in E}(1+x_ux_vy))=\prod_{(u, v)\in E}(1+y(-1)^{|S\cap\{u, v\}|})=\prod_{(u, v)\in E}(1+(-1)^{[u\in S]}(-1)^{[v\in S]}y) \]

又已知(\(IFMT(A)=FMT(A)/2^n\)

\[IFMT(A)_0=\sum_jA_j/2^n \]

所以我们最终的答案肯定形如

\[\sum_{t}(1+y)^t(1-y)^{m-t}c_t \]

\(c_t\) 这个系数可以 \(O(2^n)\) 求解。然后剩下的东西暴力求解。

关于如何 \(O(2^n)\):本题无重边,于是你枚举所有集合,取一个点加入,用一个 popcount 与一下。

标准生成函数题

给定⼀个字符串 \(s\) 和字符集大小 \(r\),询问有多少个长度为 \(n\) 的字符串不包含 \(s\) 作为子串。\(n\leq 2\times 10^5\)

第一步要容斥,钦定 \(S\) 在某些位置出现。\(S\) 出现以后可能还会有 \(S\) 接着出现,但一定是与 border 有关的。

\(|S|=m\),它有 border \(c_1, c_2, \cdots, c_k\),令 \(C(z)=\sum_{i=1}^kz^{m-c_i}\) 表示它的 border 的生成函数。

那么答案的生成函数为 \(SEQ(rz-z^mSEQ(-C(z)))\)\(-1\) 都是容斥系数。直接计算即可。

[UR #19] 通用测评号

钦定我们的操作可以选任何数,我们计算有一个数 \(\geq a\) 的概率,输出时 \(\times n\)

钦定最后一步操作 \(a_1\)。可以用 EGF 刻画操作序列。需要广义二项式定理。很机械,以前是做过这样的东西的。

最终 \(O(n^4)\)

方格染色但是加强

\(n\times n\) 网格,初始全为白色,执行 \(m\) 次操作:染黑⼀条横线/染黑⼀条竖线/染黑⼀条斜线(斜率 \(=1\))。

问操作后有多少个黑格。\(n\leq 2\times 10^5\),拒绝 \(O(n^2/w)\)

直线:可以记 \(a_x\) 表示 \(x\) 这一行是否没有染黑。\(b_y, c_{x-y}\) 同理,那么我们欲将统计 \(a_x=b_y=c_{x-y}=1\) 的数量。改写下标为 \(a'_x=b'_{n-y}=c'_{n-x+y}=1\),求 \(a'b'c'\) 的乘积取 \(2n\) 次系数。

线段:以 \(\sqrt n\times \sqrt n\) 大小分块,每一块内跑上面的算法,还有一些散的可以轻易解决。\(O(n\sqrt n\log n)\)。优化考虑到多项式仅修改一项系数,它的 FFT 可以线性修改(考察其定义);同理,我们提取 \(2n\) 次系数也可以线性(也考察其定义)。于是因为只有 \(O(m)\) 次线性(关于 \(O(\sqrt n)\) 的长度成线性)的修改,复杂度为 \(O(n\sqrt n)\)(不区分 \(n,m\))。

[CCPCF23B] Periodic Sequence

策略是首先写一个长度为 \(n\) 的字符串,然后每次将其无限复制,取最长的没出现过的前缀。于是所有能生成的字符串形如:有一个长度为 \(k\) 的初始字符串的前缀,后面接着很多长度 \(\leq k\) 的初始字符串的前缀。我们只需要计数这些字符串。

生成函数显然为:

\[\sum_k x_k\cdot\frac{1}{1-(x+x^2+\cdots+x^k)}=(1-x)\sum_k x_k\cdot\frac{1}{1-2x+x^{k+1}} \]

\[=(1-x)\sum_kx^k\sum_t x^t(2-x^k)^t \]

后面还有几步就能观察到可以根号分治,还没推。\(O(n\sqrt n)\)

[Hangzhou23B] Festival Decorating

可以分成 \(O(\log n)\) 段做 \(O(\log n)\) 次差卷积。

卷积构造:使 \(x_u, x_v\)\(x_v-x_u\) 贡献 \(c_uc_v(c_u-c_v)^2\)(保证它们颜色不同时贡献不为零,同时不会误判到无灯的地方)。

posted @ 2024-08-02 15:25  caijianhong  阅读(100)  评论(0编辑  收藏  举报