组合数学(待更新)

严格弱序(Strict Weak Ordering)

序理论相关可以看oiwiki序理论

严格弱序是一种二元关系(以下为简便称之为\(<\),定义在集合\(S\)上),满足以下性质:

不可比关系(\(x\) is incomparable with \(y\))可表达为\(\neg(x<y\lor y<x)\),这里为方便简记为\(p(x,y)\)

  1. 非自反性irreflexivity\(\forall x\in S,x \not< x\)

  2. 非对称性asymmetry\(\forall x,y\in S,x<y\Rightarrow y\not< x\)

  3. 传递性transitivity\(\forall x,y,z\in S,x<y\land y<z\Rightarrow x<z\)

  4. 不可比的传递性transitivity of incomparability\(\forall x,y,z\in S,p(x,y)\land p(y,z)\Rightarrow p(x,z)\)

注意到满足严格弱序的运算符能够表示所有逻辑运算符,以小于号\(<\)为例:

  • \(a<b\)

  • \(a>b\iff b<a\)

  • \(a=b\iff \neg(a<b\lor b<a)\)

  • \(a\le b\iff \neg(b<a)\)

  • \(a\ge b\iff \neg(a<b)\)

  • \(a\ne b\iff a<b\lor b<a\)

但不满足严格弱序的运算符(如\(\le\))就不行。这也是C++中重载后的比较规则要满足严格弱序的原因(最初默认采用的是小于号\(<\))。

Lucas定理

\[{n \choose m} \equiv {\lfloor \frac{n}{p} \rfloor \choose \lfloor \frac{m}{p} \rfloor} {n \bmod p \choose m \bmod p} \pmod p\\ \text{其中} p \text{为质数。} \]

证:

注意到 \({p \choose n} \equiv [n=p \lor n=0] \pmod p\)

因此 \((a+b)^p \equiv a^p+b^p \pmod p\)

对于 \(f(x)=(1+x)^n\)\([x^m]f(x)={n \choose m}\)

我们现在对 \(f(x)\) 做一点变换,

\[\begin{aligned} f(x)&=(1+x)^n\\ &=(1+x)^{p \times \lfloor \frac{n}{p} \rfloor}(1+x)^{n \bmod p}\\ &=((1+x)^{p})^{\lfloor \frac{n}{p} \rfloor}(1+x)^{n \bmod p} \end{aligned} \]

所以 \(f(x) \equiv (1+x^p)^{\lfloor \frac{n}{p} \rfloor} (1+x)^{n \bmod p} \pmod p\)

\(h(x)=(1+x^p)^{\lfloor \frac{n}{p} \rfloor},g(x)=(1+x)^{n \bmod p}\)

\([x^m]f(x) \equiv [x^{kp}]h(x) \times [x^r]g(x) \pmod p\)

因为 \(0 \le r < p\),所以将 \(m\) 拆成 \(m=kp+r\) 的形式的方法是唯一的,即 \(k=\lfloor \frac{m}{p} \rfloor,r=m \bmod p\)

所以 \([x^{kp}]h(x)={\lfloor \frac{n}{p} \rfloor \choose \lfloor \frac{m}{p} \rfloor},[x^r]g(x)={n \bmod p \choose m \bmod p}\)

原式得证。

感觉不是很严谨,感性理解一下。

错排

\(f_n\) 表示长度为 \(n\) 且不存在 \(p_i=i\) 的排列的个数。

\[f_n=(n-1)(f_{n-2}+f_{n-1}) \]

证明:

考虑将 \(1\) 放在位置 \(k\) 上(\(k \ne 1\)),这里有 \(n-1\) 种方法,\(k\) 的放置位置可分类讨论。

  1. \(k\) 放在位置 \(1\) 上,那么还要将剩下 \(n-2\) 个数错排,即 \(f_{n-2}\)

  2. \(k\) 放在位置 \(t\) 上,那么此时的错排中位置 \(1\) 上放的数 \(p\) 一定有 \(p \ne 1 \land p \ne k\),所以可以构造另一个排列:将 \(p\) 放在位置 \(k\) 上,并将 \(1\) 与位置 \(1\) 去掉。显然新的排列是一个长度为 \(n-1\) 的错排,且与原来的错排是 一一对应 的。即 \(f_{n-1}\)

综上,原式得证。

注意,本证明过程在某些题中也可以用来推导递推关系(如P7438 更简单的排列计数)。

鸽巢原理

\((\sum\limits_{i=1}^n{p_i})-n+1\) 放入 \(n\) 个盒子,一定存在一个盒子 \(i\),使得第 \(i\) 个盒子至少装了 \(p_i\) 个物品。

证:

设第 \(i\) 个盒子装了 \(a_i\) 个物品,假设:

\(\forall x \in \mathbb{N^* } \land 1\le x \le n,a_i < p_i\),则有 \(\sum a_i \le (\sum p_i)-n <(\sum p_i)-n+1\),矛盾。

所以原命题得证。

练习

  1. 有十个数 \(a_1,a_2\dots a_{10}\) 满足 \(\forall_{1\leq i\leq10}{1\leq a_i\leq60}\),证明能够从 \(a_i\) 中挑出两个交为空的子集,使得它们的和相等。

证:

注意到两个交不为空且和相等的子集减去交集后和仍然相等,所以“交为空”的限制可以去掉。总共有 \(2^{10}=1024\) 个子集,而和的取值范围为 \([0,600]\),根据鸽巢原理,原命题得证。

  1. 证明一张有超过 1 个点的简单无向图必定有两点度数相等。

证:

若有 \(2\) 个度为 \(0\) 的点,已有两点度数相等。

若有 \(1\) 个度为 \(0\) 的点,则其他 \(n-1\)个点的度数的取值范围为 \([1,n-2]\),根据鸽巢原理,一定有两点度数相等。

若没有度数为 \(0\) 的点,则 \(n\) 个点的度数的取值范围为 \([1,n-1]\),根据鸽巢原理,一定有两点度数相等。

综上,原命题得证。

3.证明能从任意 \(11\) 个实数中挑选出 \(4\) 个数 \(a,b,c,d\) 满足:

\[(ac+bd)^2\geq\frac 1 2(a^2+b^2)(c^2+d^2)\\ Hint:\cos <\overrightarrow{x}, \overrightarrow{y} >=\frac{\overrightarrow{x} \cdot \overrightarrow{y}}{\lvert \overrightarrow{x}\rvert \cdot \lvert \overrightarrow{y} \rvert} \]

证:

\[\frac{(ac+bd)^2}{(a^2+b^2)(c^2+d^2)} \ge \frac{1}{2}\\ 令 \overrightarrow{x}=(a,b),\overrightarrow{y}=(c,d)\\ \cos^2<\overrightarrow{x},\overrightarrow{y}> \ge \frac{1}{2}\\ 即转化成 \overrightarrow{x} 和 \overrightarrow{y}的夹角不大于 \frac{\pi}{4} \]

由于 \(11\) 个实数中根据鸽巢原理,至少有 \(6\) 个数符号相同,所以可以挑出三个同一象限的向量,其中一定有两个向量的夹角不大于 \(\frac{\pi}{4}\)

容斥原理

练习一

\(n\) 个元素,问有多少种选择若干个子集的方案,使得选出的子集的交集大小恰好为 \(k\)

解:

设钦定交集大小为 \(k\) 的方案数为 \(g(k)\),交集大小恰好为 \(k\) 的方案数为 \(f(k)\)。有:

\[\begin{aligned} g(k)&={n \choose k}(2^{2^{n-k}}-1) \\ g(k)&=\sum \limits_{i=k}^n {i \choose k} f(i) \end{aligned} \]

解释以下第一个式子,钦定 \(k\) 个后还有 \(2^{n-k}\) 个子集,每个集合选或不选,即 \(2^{2^{n-k}}\) 种方案,最后要减去一个集合都不选的 \(1\) 种方案。

然后反演即可。

\[f(k)=\sum \limits_{i=k}^n (-1)^{i-k}{i \choose k} g(i)=\sum \limits_{i=k}^n (-1)^{i-k}{i \choose k}{n \choose i}(2^{2^{n-i}}-1) \]

练习二

有两个序列 \({a_i},{b_i}\) 保证所有元素互不相同。你需要重排 \(b\) 序列,使得恰好有 \(k\)\(i\) 满足 \(a_i>b_i\),求方案数。

\(0<k\leq n\leq2000\)

解:

注意到序列 \(a\) 的顺序对答案是没有影响的,所以先将 \(a\) 从小到大排序。

\(dp_{i,j}\) 表示考虑了前 \(i\) 对,有 \(j\) 对满足限制的。

发现转移不了(填当前位置上的 \(b\) 时不知道前面不满足限制的 \(b\) 与当前位置上的 \(a\) 的关系)。

考虑只算 \(a>b\) 的,即修改定义为考虑了前 \(i\) 对,钦定了 \(j\) 对满足限制的方案数,发现可以转移了。

\[dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1} \times (cnt_{a_i}-j+1) \]

\(cnt_{a_i}\) 表示序列 \(b\) 中比 \(a_i\) 小的数的个数。

由于序列 \(a\) 单调递增,所以前面 \(j-1\)\(b\) 都比 \(a_i\) 小,在算的时候要减去。

\(g(k)\) 表示钦定 \(k\) 对满足限制的方案数,\(f(k)\) 表示恰好 \(k\) 对满足限制的方案数。有:

\[g(k)=(n-k)! dp_{n,k}=\sum \limits_{i=k}^n {i \choose k} f(i) \]

于是反演即可。

\[\begin{aligned} f(k)&=\sum \limits_{i=k}^n (-1)^{i-k} {i \choose k} g(i)\\ &=\sum \limits_{i=k}^n (-1)^{i-k} {i \choose k}(n-i)! dp_{n,i} \end{aligned} \]

练习三

有一个 \(n\times n\) 的矩阵,将其三染色,使得至少有一行或者一列同色,问方案数。

\(n\leq10^6\)

解:

\(g(i,j)\) 表示钦定有 \(i\)\(j\) 列同色的方案数,\(f(i,j)\) 表示恰好有 \(i\)\(j\) 列同色的方案数。

我们发现,当 \(i>0 \land j>0\) 时,这些同色的行和列一定是同一种颜色。故有下式:

\[g(i,j)=\begin{cases} 3^{n(n-j)+j}{n \choose j} & i=0\\ 3^{n(n-i)+i}{n \choose i} & j=0\\ 3^{(n-i)(n-j)+1}{n \choose i}{n \choose j}& Otherwise. \end{cases} \]

\(g(i,j)\)\(f(i,j)\) 的关系:

\[g(i,j)=\sum \limits_{k=i}^n \sum \limits_{t=j}^n {k \choose i}{t \choose j} f(k,t) \]

对此反演,有两种方法。

练三法一

\[\begin{aligned} g(i,j)&=\sum \limits_{k=i}^n \sum \limits_{t=j}^n {k \choose i}{t \choose j} f(k,t)\\ &=\sum \limits_{k=i}^n {k \choose i} \sum \limits_{t=j}^n {t \choose j} f(k,t) \end{aligned} \]

我们设:

\[h(k,j)=\sum \limits_{t=j}^n {t \choose j} f(k,t) \]

\[g(i,j)=\sum \limits_{k=i}^n {k \choose i}h(k,j) \]

对上面两个式子反演得到:

\[\begin{aligned} h(i,j)&=\sum \limits_{k=i}^n (-1)^{k-i}{k \choose i}g(k,j)\\ f(k,j)&=\sum \limits_{t=j}^n (-1)^{t-j}{t \choose j} h(k,t) \end{aligned} \]

所以得到:

\[\begin{aligned} f(i,j)&=\sum \limits_{t=j}^n (-1)^{t-j}{t \choose j} h(i,t)\\ &=\sum \limits_{t=j}^n (-1)^{t-j}{t \choose j}\sum \limits_{k=i}^n (-1)^{k-i}{k \choose i}g(k,t)\\ &=\sum \limits_{t=j}^n \sum \limits_{k=i}^n (-1)^{k+t-i-j}{t \choose j}{k \choose i}g(k,t) \end{aligned} \]

现在来考虑我们要求到什么。

求至少有 \(1\) 行或 \(1\) 列同色的方案数,即用总方案数减去恰好有 \(0\)\(0\) 列同色的方案数,所以我们要求的是 \(f(0,0)\)

\[f(0,0)=\sum \limits_{t=0}^n \sum \limits_{k=0}^n (-1)^{k+t}g(k,t) \]

由于我们对 \(g\) 的取值进行了分讨,这里将式子按分讨拆开。

\[\begin{aligned} f(0,0)&=\sum \limits_{t=1}^n \sum \limits_{k=1}^n (-1)^{k+t}g(k,t)+\sum \limits_{t=1}^n (-1)^t g(0,t)+\sum \limits_{k=1}^n (-1)^k g(k,0)+g(0,0)\\ &=\sum \limits_{t=1}^n \sum \limits_{k=1}^n (-1)^{k+t}3^{(n-k)(n-t)+1}{n \choose k}{n \choose t}+\sum \limits_{t=1}^n (-1)^t 3^{n(n-t)+t}{n \choose t}+\sum \limits_{k=1}^n (-1)^k 3^{n(n-k)+k}{n \choose k}+3^{n^2} \end{aligned} \]

后面三块式子已经可以 \(O(n)\) 做了,来看前面两重求和号的式子。

\[\begin{aligned} \sum \limits_{t=1}^n \sum \limits_{k=1}^n (-1)^{k+t}3^{(n-k)(n-t)+1}{n \choose k}{n \choose t}&=\sum \limits_{t=1}^n \sum \limits_{k=1}^n (-1)^{k+t}3^{n^2+1-nt-nk+kt}{n \choose k}{n \choose t}\\ &=3^{n^2+1} \sum \limits_{t=1}^n (-1)^t3^{-nt}{n \choose t}\sum \limits_{k=1}^n (-1)^k {n \choose k} 3^{k(t-n)}\\ &=3^{n^2+1} \sum \limits_{t=1}^n (-1)^{n-t}3^{-nt}{n \choose t}\sum \limits_{k=1}^n (-1)^{n-k} {n \choose k} (3^{t-n})^k\\ &=3^{n^2+1} \sum \limits_{t=1}^n (-1)^{n-t}3^{-nt}{n \choose t}((3^{t-n}-1)^n-(-1)^{n}) \end{aligned} \]

这样子就做完了。

练三法二

对于我们要反演的式子:

\[g(i,j)=\sum \limits_{k=i}^n \sum \limits_{t=j}^n {k \choose i}{t \choose j} f(k,t) \]

有二元二项式反演:

\[f(i,j)=\sum \limits_{t=j}^n \sum \limits_{k=i}^n (-1)^{k+t-i-j}{t \choose j}{k \choose i}g(k,t) \]

证明同法一。

可以推广到 \(n\) 元的形式。

练习四

\({n\brace m}\) 表示把 \(n\) 个不同的物品划分为 \(m\) 个集合构成簇的方案数(不允许空集),求 \({n \brace m}\)

解:

显然有 \(O(nm)\) 的递推:

\[{n \brace m}={n-1 \brace m-1}+m{n-1 \brace m} \]

另一种更快的做法:

\(f(m)\) 表示恰好把 \(n\) 个不同的物品划分为 \(m\) 个互不相同的集合构成簇的方案数(集合不能为空),\(g(m)\) 表示把 \(n\) 个不同的物品放入钦定的 \(m\) 个互不相同的集合构成簇的方案数,其中集合可以为空。

所以 \(g(m)= m^n= \sum \limits_{i=0}^m {m \choose i} f(i)\)

反演一下得到:

\[\begin{aligned} f(m)&=\sum \limits_{i=0}^m (-1)^{m-i}{m \choose i}g(i)\\ &=\sum \limits_{i=0}^m (-1)^{m-i}{m \choose i} i^n\\ &=\sum \limits_{i=0}^m (-1)^{m-i}\frac{m!i^n}{(m-i)!i!} \end{aligned} \]

由于原来的集合都是相同的,所以 \({n \brace m}=\frac{f(m)}{m!}\)

即:

\[{n \brace m}=\sum \limits_{i=0}^m (-1)^{m-i}\frac{i^n}{(m-i)!i!} \]

Min-Max容斥

证明

\(\max\limits_{k_{th}}{S}=\sum\limits_{T\subseteq S}{(-1)^{|T|-k}\dbinom {|T|-1}{k-1}\min T}\)

\(=\sum\limits_{x\in S}x\sum\limits_{x\in T\subseteq S}{(-1)^{|T|-k}\dbinom {|T|-1}{k-1}[\min{T}=x]}\)

\(f(x)\) 表示 \(S\) 中大于 \(x\) 的元素构成的集合。

\(=\sum\limits_{x\in S}{x}\sum\limits_{x\in T\subseteq f(x)}{(-1)^{|T|-k}\dbinom{|T|-1}{k-1}}\)

枚举 \(|T|\):

\(=\sum\limits_{x\in S}{x\sum\limits_{l = 1}^{|f(x)|}{(-1)^{l-k}\dbinom{|f(x)|-1}{l-1}\dbinom{l-1}{k-1}}}\)

\(=\sum\limits_{x\in S}{x\sum\limits_{l=1}^{|f(x)|}{(-1)^{l-k}\dbinom {|f(x)|-1}{k-1}\dbinom{|f(x)|-k}{l-k}}}\)

\(=\sum\limits_{x\in S}{x\dbinom {|f(x)|-1}{k-1}\sum\limits_{l=1} ^{|f(x)|}{(-1)^{l-k}\dbinom {|f(x)|-k}{l-k}}}\)

易知 \(|f(x)|< k\) 时无贡献。

\(=\sum\limits_{x\in S}{x\dbinom {|f(x)|-1}{k-1}\sum\limits_{l=0}^{|f(x)|-k}(-1)^l\dbinom{|f(x)|-k}{l}}\)

\(=\sum\limits_{x\in S}{x\dbinom {|f(x)|-1}{k-1}[|f(x)|=k]}\)

\(=\max\limits_{k_{th}}{S}\)

原式得证。

证明 \(\min\) 的方法类似。将 \(k=1\) 代入得到另外两个式子。

练习一

给定三个序列 \(a_i,b_i,c_i\),求

\[\sum\limits_{1\leq i<j\leq n}{\max{a_i+a_j,b_i+b_j,c_i+c_j}-\min{a_i+a_j,b_i+b_j,c_i+c_j}} \]

\(n\leq2\times10^5\)

解:

暴力拆开那个 \(max\) :

\(\max{a_i+a_j,b_i+b_j,c_i+c_j}\)

\(=\min{a_i+a_j}+\min{b_i+b_j}+\min{c_i+c_j}\\\ \ \ \ \ -\min{a_i+a_j,b_i+b_j}-\min{a_i+a_j,c_i+c_j}-\min{b_i+b_j,c_i+c_j}\\\ \ \ \ \ +\min{a_i+a_j,b_i+b_j,c_i+c_j}\)

抵消掉最后那一项,剩下的项中,只有一个的是平凡的,有两个的可以二维偏序,总复杂度就是 \(O(n\log{n})\)

练习二

\(n\) 个元素,每次会随机选择一个,有 \(p_i\) 的概率选择第 \(i\) 个,问第一次所有元素都被选择过的期望时间。

\(1\leq n\leq20\)

解:

因为 \(min/max\) 容斥都是线性运算,且期望具有线性性,所以可以直接套上期望:

\(E(\max{S})=\sum\limits_{T\subseteq S}{(-1) ^{|T|-1}E(\min{T})}\)

\(E(\min{T})\) 的含义实际上就是第一次选到 \(T\) 中元素的期望时间,可以把 \(T\)\(T\) 的补集看做两个整体,那么一次选中的概率就是 \(\sum\limits_{x\in T}{p_x}\),期望时间就是其倒数 \(\frac 1{\sum\limits_{x\in T}{p_x}}\)

然后直接带进式子里计算即可,\(O(n2^n)\)

练习三

\(n\) 个元素,每次会随机选择一个,有 \(\frac {p_i} M\) 的概率选择第 \(i\) 个,问第一次有 \(k\) 个元素被选择过的期望时间。

\(1\leq l\leq n\leq 10^3,n-10\leq k\leq n,\sum\limits_{i=1}^n{p_i}=M\leq10^4\)

解:

相当于求期望出现时间第 \(n-k+1\) 大,令 \(k \leftarrow n-k+1\),一样的期望式子列出来:

\(E(\max\limits_{k_{th}}S)=\sum\limits_{T\subseteq S}{(-1)^{|T|-k}\dbinom {|T|-1}{k-1}\frac{M}{\sum\limits_{x\in T}p_x}}\)

直接求肯定 G。因为 \(M\leq10^4\),所以考虑计算每一种 \(\sum\limits_{x\in T}{p_x}\) 作为分母的项的系数之和,再算答案。

考虑设 \(dp_{i,j}\) 表示前 \(i\) 个,分母和为 \(j\) 的项的系数和。

不选很好转移,选的话中间那坨组合数就不太能转的动。

考虑到 \(\dbinom {|T|-1}{k-1}=\frac{|T|-1}{|T|-k}\dbinom{|T|-2}{k-1}\),所以我们可以在方程里及一个 \(l=|T|\),那就可以转了:

\(dp_{i,j,l}=dp_{i-1,j,l}-\frac{l-1}{l-k}dp_{i-1,j-p_i,l-1}\)

但是这个方程是 \(O(n^2m)\) 的,显然过不了,且没用到 \(k\leq10\) 的性质。

又考虑到 \(\dbinom {|T|-1}{k-1}=\dbinom{|T|-2}{k-1}+\dbinom{|T|-2}{k-2}\)

那么只需要在方程中记 \(l=k\) 即可转移:

\(dp_{i,j,l}=dp_{i-1,j,l}+dp_{i-1,j-p_i,l-1}-dp_{i-1,j-p_i,l}\)

(解释:如果第 \(i\) 个不选,即有 \(dp_{i-1,j,l}\) 的贡献,如果第 \(i\) 个要选,即 \(|T| \leftarrow |T|+1\),观察把组合数拆开之后的式子,\((-1)^{|T|-k}\) 的符号会改变,所以拆开后的 \({|T|-2 \choose k-1}\) 这一项的符号改变,贡献为 \(-dp_{i-1,j-p_i,l}\)。而对于 \({|T|-2 \choose k-2}\) 这一项,\(k\) 的值也变化了 \(1\),对于 \((-1)^{|T|-k}\) 的影响还有一个 \(-1\),所以符号不变,贡献为 \(+dp_{i-1,j-p_i,l-1}\)

就可以 \(O(nmk)\) 了。

康托展开

\(Question\):求\(1\)\(n\)的一个排列的排名。

式子:

\[ans=\sum\limits_{i=1}^n sum_{a_i}\times(n-i)! \]

其中\(sum_{a_i}\)指下标大于\(i\)的数中比\(a_i\)大的数的个数。可以用树状数组来维护这个东西。

理解一下,有些类似数位DP,前\(i-1\)位视作固定了,那么只有\(sum_{a_i}\)个数放在第\(i\)位时比当前的排列排名小。

确定好第\(i\)位后,后面\(n-i\)位就随便放,所以式子长这样。

注意一下这里的排名从\(0\)开始。

置换和排列

都要退役了还没系统地学这个东西,只是零零散散会一点。

定义

一个集合 \(X\) 到自身的双射 \(\sigma\) 称为一个置换。若 \(X\) 上有全序,那么一个置换液被称为一个(全)排列。该全序也被称为自然顺序。

大小为 \(n\) 的集合有 \(n!\) 种置换。

表示方法

双行记号

没啥用。写成 \(\sigma=\begin{pmatrix}1 & 2 & 3\\ 2 & 3 & 1 \end{pmatrix}\),表示第一行置换后得到第二行。

单行记号

将双行记号中的第一行按自然顺序写,记 \(\sigma(i)\) 为第一行中的数 \(i\) 对应的第二行的数,比如写下 \(\sigma(1)\sigma(2)\sigma(3)=231\)

这个可以用来比排列的大小。

轮换表示

极其重要。

随便写下 \(X\) 中的一个还未被写下的数 \(x\),然后重复写下 $\sigma(x),\sigma(\sigma(x))\cdots $,直到一个数已经被写下过就停止,将刚才写下的东西用括号括起来,回到第一步。

就是常说的拆置换环。连有向边 \(x\to \sigma(x)\)。由于 \(\sigma\) 是双射,\(x\) 的入度和出度都是 \(1\),所以会构成若干个环。

比如排列 \(265431\),写出轮换表示为 \((126)(35)(4)\)。实践中有时会省略长度为 \(1\) 的轮换。恒等置换常记作 \((1)\)

一些题推性质也是这样建图去找。

复合

也叫置换的乘积。

比如 \(\sigma=\begin{pmatrix}x_1&x_2&\cdots &x_n\\ x_{p_1}&x_{p_2}&\cdots & x_{p_n}\end{pmatrix}\)\(\pi=\begin{pmatrix}x_{p_1}&x_{p_2}&\cdots & x_{p_n}\\ x_{q_1}&x_{q_2}&\cdots & x_{q_n}\end{pmatrix}\)

那么 \(\pi\circ\sigma=\begin{pmatrix}x_1&x_2&\cdots &x_n\\ x_{q_1}&x_{q_2}&\cdots & x_{q_n}\end{pmatrix}\),类似函数复合,\((\pi\circ\sigma)(x)=\pi(\sigma(x))\)

这个东西有结合律,没有交换律,所以注意顺序。

一个置换的幂可以用快速幂 \(O(n\log n)\) 计算,也可以拆置换环后,将复合原来的置换看作在置换环上走一步,只需要取模一下 \(O(n)\) 计算。

posted @ 2024-07-25 12:13  RandomShuffle  阅读(99)  评论(0)    收藏  举报