2022.10.4 闲话
问一下,是只有我除了洛谷首页 502 Bad Gateway / 504 Gateway Time-out 别的都能访问吗?
早阅览读期刊《数理化解题研究》,在一堆弔题中提取出了一道有趣的组合计数 .
Original C
有四种颜色 CMYK,每种颜色有 \(10\) 个不同的小球,分别标号 \(1\dots 10\) .
从这 \(40\) 个小球中取 \(4\) 个,要求颜色互不相同,标号互不相邻,问方案数 .
解:首先随便放 \(6\) 个无标号无颜色的小球 .
然后插 \(4\) 个到空位里,这样的方案数是 \(\dbinom74\),然后从左到右标号,这样标号就不相邻了 .
四个小球每个分一种颜色即可,方案数是 \(4!\) .
乘法原理,答案就是 \(4!\dbinom74\) .
这里需要一个有序一个无序才能数对 .
这看起来太平凡了,我们先来一个二元的推广情况:
Discrete Discreteness
一个 \(n\times m\) 矩阵,选出 \(k\) 个数,满足任意两数所在行、所在列均不相邻 .
问方案数 .
也是一样:首先随便放 \(n-k\) 个无标号无颜色的小球 .
然后插 \(k\) 个到空位里,这样的方案数是 \(\dbinom {n-k+1}k\),然后从左到右标号作为行号,这样行就不相邻了 .
这 \(k\) 个数再限制列,类似的,方案数是 \(\dbinom {m-k+1}k\) .
乘法原理,顺便乘一个 \(k!\) 让它变得有序,则答案就是 \(k!\dbinom {n-k+1}k\dbinom {m-k+1}k\) .
额看起来这个思路比较牛逼,但是推广之后是不是就显然的不能再显然了 .
来看看多元情况:
Discrete Discreteness II
有一个序列 \(\{a_n\}\),令集合 \(\displaystyle S=\prod_{i=1}^n[1,a_i]\),其中乘法左结合且为笛卡尔积,在集合 \(S\) 中选出 \(k\) 个元素 \(v_{1\dots k}\),满足:
- \(v_{1\dots k}\) 互不相同 .
- \(v_{1\dots k}\) 的每一维都由不相邻的 \(k\) 个整数组成 .
问方案数,答案对给定素数 \(p\) 取模,保证 \(p>\max\{a_i\}\) .
- Task 1:\(1\le k\le n,a_i\le 10^6\) .
- Task 2:\(1\le k\le n\le 10^3\),\(1\le a_i\le 10^9\) .
根据上一题 Discrete Discreteness 的分析我们可以知道答案就是
注意到这个题有数据范围了:
- Task 1:\(\Theta(n+L)\) 递推组合数 .
- Task 2:\(\Theta(n\sqrt L\log L)\) 快速阶乘算法 .
其中 \(L=\max\{a_i\}\) 是值域 .
如果模数固定也可以分段打表,但是有点 op 就不说了 .
好像这个问题到这里就结束了?发现内层这个插入法太平凡了啊,我们能不能再让它有趣一点呢?
Similar DD I
有一个序列 \(\{a_n\}\),令集合 \(\displaystyle S=\prod_{i=1}^n[1,a_i]\),其中乘法左结合且为笛卡尔积,在集合 \(S\) 中选出 \(k\) 个可能相同的元素 \(v_{1\dots k}\) .
两个方案不同,当且仅当两个 \(v_{1\dots k}\) 的每一维组成的可重集分别不同 .
问方案数,答案对 \(998244353\) 取模 .
\(1\le n\le 10^3\),\(1\le k\le a_i\le 10^{10^4}\),\(a_i-2k\le 10\) .
这个的技巧性就开始上来了啊 .
根据 Discrete Discreteness II 的结论可以得到答案就是
其中 \(\displaystyle{n\brace k}\) 是第二类斯特林数 .
每个斯特林数分别算,当多组询问做,令 \(p=k\),\(q=a_i-2k+1\),则条件 \(a_i-2k\le 10\) 就是 \(q\le 11\) .
然后要求的就是 \(\displaystyle{{p+q}\brace p}\) 了 .
注意到 \(q\) 非常小,所以应用一个组合恒等式
这个在具体数学中有指出,其中 \(\displaystyle\left\langle\!\!\left\langle\begin{matrix}n\\m\end{matrix}\right\rangle\!\!\right\rangle\) 是二阶欧拉数 .
二阶欧拉数的范围非常小,可以 \(\Theta(q^2)\) DP 求出来 .
然后可以根据斯特林多项式
的次数为 \(n-1\),分母下降幂的次数是 \(n+1\) 得到 \(\displaystyle{x\brack x-n}\) 的关于 \(x\) 次数为 \(2n\) 的多项式 .
第一类斯特林数可以由下面的恒等式推到二阶欧拉数,以得到其次数:
然后经过一些平凡的步骤可以得到 \(\displaystyle{{x+n\brace x}}\) 的次数为 \(2n\) .
这样对于 \(n=0\dots 11\)(这个 \(n\) 也就是原来的 \(q\))分别算一下 \(x\) 比较小的时候的值然后插值即可得到多项式各项系数 .
然后把 \(p\) 的值代入即可,这个可以用秦九韶算法,于是时间复杂度为 \(\Theta(q)\) .
于是整个问题的时间复杂度就是 \(\displaystyle \Theta\left(n\sum_i(a_i-2k)\right)\),数据范围看起来有点松,实际上是再大点估计都读不进来了 /qd
感觉问题到这里就差不多了,再难也没有什么意义了,当然你可以通过这个皮套出很多题来,这个放个题,解答略 .
Similar DD II
有一个序列 \(\{a_n\}\) 和一个整数 \(z\),令集合 \(\displaystyle S=\prod_{i=1}^n[0,a_i]\),其中乘法左结合且为笛卡尔积,在集合 \(S\) 中选出若干互不相同的元素 \(v_{1\dots k}\),满足对于 \(v\) 的每一维 \(v'\):
- \(\{v'\}\) 单调递增 .
- 至少存在一个整数 \(q\) 使得存在整数 \(i\) 使得 \(0<v'_i\le qz<v'_{i+1}\) .
问方案数,答案对 \(10^9+9\) 取模 .
\(1\le n\le 10^6\),\(1\le z\le a_i\le 10^9\),\(z\mid \underset i{\gcd}(a_i)\) .
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16754066.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ