2024.12.23 闲话

(通过北京集训)学习了一下符号化容斥的思路,大致记叙一下 .

upd. 其实好像就是序列上的所谓集合划分容斥,在集合上的问题只需要把形式幂级数换成集合幂级数 .

前置知识:浅谈多项式与生成函数符号化方法 .

记号约定:花体字母表示无标号组合类:F,G,带帽子的花体字母表示有标号组合类:F^,G^,同一个题目中相同字母表示的组合类是对应的(尽管标号结构可能不一样) .

容斥原理的基本思路大概是这样的:有一个基本单位的组合类 F,要求它在某种限制下的组合 COMBR(G) .

考虑扩充组合类 F=F+I,使得 FFCOMB 下所生成的组合对象的种类是一样的(尽管方案数可能并不相同). 同时通过构造 F 上每个元素对应的贡献(即容斥系数)来使得 COMBR(F)=COMB(F),从而去掉 R 的限制 .

00-avoiding 序列

计数 [0,m] 上的长度为 n 的整数序列,使得不出现两个连续的 0 .

如果没有不出现两个连续的 0 的限制,只需令一位的组合类是 D,答案即为 SEQ(D) .

考虑加入若干组合对象 Pk:连续 k0 组成的序列 . 上述组合对象构成组合类 P . 现在对于 D=D+P 考察 SEQ(D) . 后令 L 是合法 0 段长的组合类 .

可以把 D 分成 D{P1}P 两部分 . 对于一段 Pk 来说,在 SEQ(D) 中只可能由 SEQ=k(P)Dk 得到,考虑对 P 上的元素构造容斥系数,使得 SEQ=k(P)=L=k,那么其实也就相当于是 SEQ(P)=L .

P 对应的生成函数是 p(x),则需要 11p(x)=1+x,可得 p(x)=x1+x .

从而可以得到 D 的生成函数 F(x)=mx+x1+x(左边 mxD{P1} 的生成函数).

那么答案就是 SEQ(D),其生成函数也容易得到了:11F(x)=1+x1mx+mx2 .

Yet Another Permutation Problem

对于长度为 n 的排列 π=1,2,,n,执行不超过 k 次操作:选出其中的一个数并放到排列的开头或结尾 .

对每个 k 求出:操作过后可能得到的排列个数 .

数据范围:n1000 .

对于这道题,可能我们更熟知的是它同时被称为 Jiangly 的排列数数题 . 总之经过一些转换可以把问题转化为对每个 k 求最长连续上升段 <k 的排列个数 .

先考虑如果没有限制怎么做,在此处使用有标号组合体系,一位的生成函数是 D^,则答案为 SEQ(D^) .

然后类似地考虑扩充组合类,根据先前的经验自然发现需要把上升段扩充进去,令 Pk 表示长度为 k 的上升段对应的组合对象,其对应的组合类为 P^(由于 D^P^ 所以这里 P^ 也是扩充后的组合类).

令合法段的组合类为 I,这里合法段是没有容斥系数的,需要对 P 设计容斥系数 . 把一些连续段拼起来得到新的连续段的操作实际上对应 SEQ 变换,于是可以得到 SEQ(P)=I+E,进而可导出普通生成函数 p(x)=xxk1xk .

那么欲求即为 SEQ(P^),这里需要一个 OGFEGF 的变换,可以手动提取一下:

p(x)=j0(xjk+1+x(j+1)k)p^(x)=j0(xjk+1(jk+1)!+x(j+1)k((j+1)k)!)

这样就可以进行计算了 . 由于 p^(x) 只有 Θ(n/k) 项,所以暴力的时间复杂度就是 Θ(n2logn),可以通过 .

进一步的复杂度优化可以参阅开头提到的 EI 的博客 .

Yet Another ABC String

给定 a,b,c,问分别由 a,b,cABC 组成的不存在子串 ABCBCACAB 的字符串数量 .

数据范围:a,b,c106 .

假设经过上面两个题我们已经比较熟练了,重复的过程就不详细展开了 .

扩充组合类为 P,那么需要 SEQ(P)=1+x+x2,这就是 p(x)=x+x21+x+x2 .

a,b,c 作为普通生成函数的三个元分别计量 ABC 数量,转回原题代入容斥系数,一段的生成函数:

F(a,b,c)=a+b+cabc1abc(3abc)

答案即为 11F(a,b,c) .

作换元 u=abc,v=1abc,则:

11F=1v+u1u(2+v)=1uv+2u=1uv11+2us

把后面的有理分式展开后转为提取若干个 1uv(1+2us)k,这是简单的 . 从而问题被 Θ(a+b+c) 解决 .

posted @   yspm  阅读(162)  评论(5编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
😅​
点击右上角即可分享
微信分享提示