首页 > 其他分享 >发现忘光了,所以复习

发现忘光了,所以复习

时间:2023-02-27 21:23:00浏览次数:44  
标签:发现 忘光 复习 sum displaystyle overline binom brace underline

斯特林数及反演

以前根本不知道斯特林反演,斯特林数也忘的差不多了,复习一下。

快乐斯特林:

pp9U9o9.jpg

第一类斯特林数

记作 \(\displaystyle{a\brack b}\),表示从 \(a\) 个数中选出 \(b\) 个环的方案数。

  • \(\displaystyle {a\brack b}=\displaystyle{a-1\brack b-1}+(a-1){a-1\brack b}\)

    插入一个数,要么新建环,要么插在任意位置。

  • $\displaystyle\sum_{i=0}^n {n\brack i}=n! $

    看作排列的置换环。

  • \(\displaystyle {a\brack 1}=(a-1)!\;\;{a\brack a-1}=\binom a2\)

    第一个就是圆排列,第二个是选出两个放一起。

『FJOI2016』建筑师

问不同前缀 \(\max\) 数量 \(=A\) 且不同后缀 \(\max\) 数量 \(=B\) 的 \(1\sim n\) 排列数量。

\(A,B\le 100,n\le 10^5\)

题解:

首先,前后缀完全分离,因为在访问到最大值 \(n\) 之后不会产生新的最大值。

可以将其分别离散化,然后最后乘组合数。

所以问题转化为求不同前缀 \(\max\) 数量 \(=A\) 的 \(1\sim n\) 排列数量。

设前缀最大值依次为 \(c_1,\dots,c_A\)。

那么可以把 \([c_i,c_{i+1}-1](i\in[1,A-1])\) 看作环,因为最大值确定了环的一个点。

更容易理解的,从 \([1,n]\) 选出 \(A\) 个环,然后将其按最大值排序,并将最大值放在首位依次放入,不难发现是双射。

回归到原题。

发现其所可以不用枚举 \(n\) 的位置。

答案就算先拿出 \(n\),然后从 $n-1 $ 个数中选出 \(A+B-2\) 环,再从 \(A+B-2\) 个环中选 \(A-1\) 个放左边,其余放右边。

所以 \(\displaystyle {n-1\brack A+B-2}\binom{A+B-2}{A-1}\) 。

第二类斯特林数

记作 \(\displaystyle{a\brace b}\),表示从 \(a\) 个数中选出 \(b\) 个非空子集的方案数。

  • \(\displaystyle {a\brace b}=\displaystyle{a-1\brace b-1}+b{a-1\brace b}\)

    插入一个数,要么新建子集,要么插在任意子集。

  • \(\displaystyle{a\brace 2}=2^{a-1}-1\)

    判断 \(2\sim a\) 的数是否与 \(1\) 在同一子集,减去一个全在一起的方案。

  • \(\displaystyle {a\brace b}=\frac{1}{b!}\sum_{i=0}^b(-1)^i \binom{b}{i}(b-i)^a=\sum_{i=0}^b(-1)^i\frac{(b-i)^a}{i!(b-i)!}\)

    容斥。

  • \(\displaystyle{a+1\brace b+1}=\sum_{i=b}^a\binom a{a-i}{i\brace b}\)

    枚举哪些数与 \(1\) 在同一集合。

Codeforces 1342 E
在 \(n \times n\) 的棋盘上放 \(n\) 个车,要求所有格子均能被车攻击、恰好有 \(k\) 对车能互相攻击。

\(n\le 10^5,k\le \frac12n(n-1)\)

题解:

一个诈骗点:你的車不是炮。

首先,必定满足所有行都有车或所有列都有,否则就会有格子攻击不到。

其次,我们可以通过简单容斥,将问题转化为只算每行出现一次\(\times 2\) \(-\)每一行每一列都出现一次。

(只在 \(k=0\) 才有东西要减,而且 \(k=0\) 时只要减 \(n!\),而 \(k=0\) 的答案就是 \(n!\)。)

不难发现 \(k\ge n\) 时答案 \(=0\)。互相攻击的车的对数为 \(n\) \(-\) 出现车的列数。

把出现车的列看作集合,不难写出答案:\(\displaystyle \binom{n}{n-k}{n\brace k}(n-k)!\)

上升下降幂

定义

\[a^{\overline{b}}=\prod_{i=a}^{a+b-1}i \\ \]

\[a^{\underline{b}}=\prod_{i=a-b+1}^b i\\ \]

注意 \(a\in \mathbb{R},b\in \mathbb{N}\)。也可以此拓展组合数的定义域。

  • \(a^\overline{x+y}=a^\overline x(a+x)^\overline y,a^\underline{x+y}=a^\underline x(a-x)^\underline y\)

    (变量名只是为了好看)

  • \(a^\overline{b}=(-1)^b(-a)^{\underline{b}},a^\overline b=(a+b-1)^\underline{b}\)

    \(a^\underline{b}=(-1)^b(-a)^{\overline{b}},a^\underline b=(a-b+1)^\overline{b}\)

  • \(\displaystyle \binom ab b^\underline i=\frac{a!}{(a-b)!(b-i)!}=\binom{a-i}{b-i}a^\underline i\)

  • \((a+1)^\underline b-a^\underline {b}=b a^\underline {b-1}\)

  • \(\displaystyle \sum_{i=a}^{b-1} i^\underline{t}=\displaystyle t!\sum_{i=a}^{b-1} \binom{i}{t}=t!\left(\binom{b}{t+1}-\binom{a}{t+1}\right)=\frac{b^\underline {t+1}-a^\underline{t+1}}{t+1}\)

  • \(\displaystyle(x+y)^\overline{a}=\sum_{i=0}^a\binom{a}ix^\overline{i}y^\overline{a-i},\displaystyle(x+y)^\underline{a}=\sum_{i=0}^a\binom{a}ix^\underline{i}y^\underline{a-i}\)

    \(\displaystyle\sum_{i=0}^a\binom{a}ix^\overline{i}y^\overline{a-i}=a!\displaystyle\sum_{i=0}^a\frac 1{i!(a-i)!}x^\overline{i}y^\overline{a-i}=a!\displaystyle\sum_{i=0}^a\binom{x}i\binom{y}{a-i}=a!\binom{x+y}a=(x+y)^\overline{a}\)

?

给定 \(n,m,a_{1\sim n}\),求有多少个序列 \(b_{1\sim n}\) 满足 \(a_i\le b_i\le m(i\in[1,n]) ∧ b_i\le b_{i+1}(i\in[1,n))\)

\(n\le 5000,0\le a_i,m\le 10^9\)

题解:

首先让 \(a\) 做个前缀 \(\max\),可以发现不影响答案。

设 \(f_{i,j}\) 表示做了前 \(i\) 位最后一位为 \(j\) 的方案数。

不难得出 \(\displaystyle f_{i,j}=\sum_{p=a_{i-1}}^m f_{i-1,p}\) ,答案就是 \(f_{n+1,m}\)。

注意到 \(f_i\) 可以写成一个 \(i-1\) 次多项式:把它写成下降幂 \(\displaystyle \sum_{j=0}^{i-1}g_{i,j} x^\underline{j}=F_i(x)=f_{i,x}\)。

\[\begin{aligned} F_{i+1}(x)&=\sum_{y=a_i}^x\sum_{j=0}^{i-1}g_{i,j} y^\underline{j}\\ &=\sum_{j=0}^{i-1}g_{i,j} \sum_{y=a_i}^xy^\underline{j}\\ &=\sum_{j=0}^{i-1}g_{i,j} \frac{(x+1)^\underline{j+1}-a_i^\underline{j+1}}{j+1}\\ &=\sum_{j=0}^{i-1}\frac {g_{i,j}}{j+1}(x^\underline{j+1}+(j+1)x^\underline j-a_i^\underline{j+1}) \end{aligned} \]

\[\begin{aligned} \sum_{j=0}^{i}g_{i+1,j}x^\underline j&=\sum_{j=0}^{i-1}\frac {g_{i,j}}{j+1}(x^\underline{j+1}+(j+1)x^\underline j-a_i^\underline{j+1})\\ &=-\sum_{j=1}^{i}\frac{g_{i,j-1}-a_i^\underline j}j+g_{i,0}+\sum_{j=1}^i \left(\frac{g_{i,j-1}}{j}+g_{i,j}\right)x^\underline j \end{aligned} \]

可以 $O(n^2) $ 推。

上升下降幂与普通幂的转化

  • \(\displaystyle x^n=\sum_{i=0}^n{n\brace i}x^\underline i\)

    归纳。\(n=0\) 显然。

    \(n\ge 1\) 时:

    \[\begin{aligned} \sum_{i=0}^n{n\brace i}x^\underline i&=\sum_{i=0}^n\left({n-1\brace i-1}x^\underline i+i{n-1\brace i}x^\underline i\right)\\ &=\sum_{i=0}^{n-1}{n-1\brace i}x^\underline {i+1}+\sum_{i=0}^{n-1}i{n-1\brace i}x^\underline i\\ &=\sum_{i=0}^{n-1}(x-i){n-1\brace i}x^\underline {i}+\sum_{i=0}^{n-1}i{n-1\brace i}x^\underline i\\ &=\sum_{i=0}^{n-1}x{n-1\brace i}x^\underline {i}=x\sum_{i=0}^{n-1}{n-1\brace i}x^\underline {i}\\ &=x^n \end{aligned} \]

  • \(\displaystyle x^\overline n=\sum_{i=0}^n{n\brack i}x^ i\)

    归纳。\(n=0\) 显然。

    \(n\ge 1\) 时:

    \[\begin{aligned} \sum_{i=0}^n{n\brack i}x^i&=\sum_{i=0}^n\left({n-1\brack i-1}x^i+(n-1){n-1\brack i}x^i\right)\\ &=\sum_{i=0}^{n-1}{n-1\brack i}x^ {i+1}+(n-1)\sum_{i=0}^{n-1}{n-1\brack i}x^i\\ &=\sum_{i=0}^{n-1}x{n-1\brack i}x^i+(n-1)\sum_{i=0}^{n-1}{n-1\brack i}x^i\\ &=(x+n-1)\sum_{i=0}^{n-1}{n-1\brace i}x^i\\ &=x^\overline n \end{aligned} \]

其他转化可以由上文的

\[a^\overline{b}=(-1)^b(-a)^{\underline{b}},a^\overline b=(a+b-1)^\underline{b}\\ a^\underline{b}=(-1)^b(-a)^{\overline{b}},a^\underline b=(a-b+1)^\overline{b} \]

得到。

Luogu 5408 第一类斯特林数·行

如题,\(1\le n<2^{18}\)。

\(\displaystyle x^\overline n=\sum_{i=0}^n{n\brack i}x^ i\)。

可以用分治 NTT 或类似快速幂的方法求。

下面主要讲复杂度更优的第二种。

考虑如何快速令 \(x^\overline n\leftarrow x^\overline{2n}\)。

\(x^\overline{2n}=x^\overline n(x+n)^\overline n\),令 \(\displaystyle x^\overline n=\sum_{i=0}^n a_i x^i\)。

\[\begin{aligned} (x+n)^\overline n&=\sum_{i=0}^n a_i (x+n)^i\\ &=\sum_{i=0}^n a_i\sum_{j=0}^i x^jn^{i-j}\binom{i}j\\ &=\sum_{j=0}^n \frac{x^j}{j!}\sum_{i=j}^n i! a_i n^{i-j}(i-j)!\\ \end{aligned} \]

不难发现右边是减法卷积。

每次卷两次。

复杂度 \(T(n)=T(\frac n2)+\Theta(n\log n)=\Theta(n\log n)\)

第二类行也可以这么求,但有更优美的方法。

标签:发现,忘光,复习,sum,displaystyle,overline,binom,brace,underline
From: https://www.cnblogs.com/TOBapNwCJN/p/17161953.html

相关文章