跳至内容
CVBB ACM Team
用户工具
注册
登录
站点工具
搜索
工具
显示页面
修订记录
Copy this page
导出 PDF
反向链接
最近更改
媒体管理器
网站地图
注册
登录
>
最近更改
媒体管理器
网站地图
您在这里:
front_page
»
2020-2021
»
teams
»
intrepidsword
»
2020-nowcoder-multi-8
2020-2021:teams:intrepidsword:2020-nowcoder-multi-8
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== Contest Info ====== date: 2020-08-03 12:00~17:00 [[https://ac.nowcoder.com/acm/contest/5673|2020牛客暑期多校训练营(第八场)]] ====== Solutions ====== ===== D. Disgusting Relationship ===== **题目大意**:对于一个 $n$ 和 $a_{1},\cdots,a_{n}$,定义 $f(a_{1},\cdots,a_{n})$ 表示对每个 $i$ 满足长为 $i$ 的环恰有 $a_{i}$ 个的 $n$ 的不同排列数。求满足 $f(a_{1},\cdots,a_{n})$ 不能被 $p$($p$ 为质数)整除的 $\{a\}$ 的数量。 **题解**:首先求 $f$,这个比较简单,就是先枚举环的位置,乘上每个环内部的不同循环次数,最后再对相同长度去重。 $$ \begin{aligned} f(a_{1},\cdots,a_{n})&=\frac{n!}{\prod_{i=1}^{n}(i!)^{a_{i}}}\cdot\prod_{i=1}^{n}((i-1)!)^{a_{i}}\cdot\frac{1}{\prod_{i=1}^{n}a_{i}!}\\ &=\frac{n!}{\prod_{i=1}^{n}i^{a_{i}}\cdot\prod_{i=1}^{n}a_{i}!} \end{aligned} $$ 从第一个等号可以看出,要使原式不被 $p$ 整除,环长至多为 $p$。我们继续简化式子: $$ \begin{aligned} &=\frac{n!}{\prod_{i=1}^{p}i^{a_{i}}\cdot\prod_{i=1}^{p}a_{i}!}\\ &=\frac{n!}{\prod_{i=1}^{p-1}i^{a_{i}}a_{i}!\cdot p^{a_{p}}a_{p}!} \end{aligned} $$ 注意到对于 $1\sim p-1$,它们的任意次方都不被 $p$ 整除。因而原式中 $p$ 的数量等价于下式: $$ \frac{n!}{\prod_{i=1}^{p-1}a_{i}!\cdot(pa_{p})!} $$ 从该式中可以直观地感受到,$2\sim p-1$ 的环数量不能太多,因为它们会导致分母中的 $p$ 成比例减少,从而使得式子被 $p$ 整除。 我们来证明,$t=a_{1}\bmod p+\sum_{i=2}^{p-1}ia_{i}<p$。另外定义 $s=p\lfloor\frac{a_{1}}{p}\rfloor$。考虑 $\frac{n!}{s!t!(pa_{p})!}$,由于 $s+t+pa_{p}=n$,该式为整数。我们证明在 $t\ge p$ 时,原式包含比该式更多的质因子 $p$,也即证明原式分母比该式包含严格更少的质因子 $p$。 首先,若某个 $ia_{i}\ge p$,考虑 $a_{i}!$ 和 $(ia_{i})!$,容易证明前者到后者之间至少能出现一次质因子 $p$,命题已证毕。否则: 根据 kumor 定理,$a!b!$ 中 $p$ 的数量不超过 $(a+b)!$ 中 $p$ 的数量,少的个数为 $a+b$ 在 $p$ 进制下发生进位的次数。因此 $$ \begin{aligned} &a_{1}!\cdot\prod_{i=2}^{p-1}a_{i}!\\ \le_{p}&s!\cdot(a_{1}\bmod p)!\cdot\prod_{i=2}^{p-1}ia_{i}!\\ <_{p}&s!t! \end{aligned} $$ 最后一个地方不能取等号是因为,式中每一项均小于 $p$,而加起来的 $t$ 却 $\ge p$,那么过程中必然发生了至少一次进位。 在该必要条件满足的前提下,由于 $p\mid pa_{p}$,$t$ 只能等于 $n\bmod p$。容易证明,只要再满足 $s$ 和 $pa_{p}$ 做加法时不发生进位,就是充要条件了。 计数时,$t$ 可以任意划分给 $1\sim p-1$,因此需要预处理划分数,$n-t$ 按位分配给 $1$ 和 $p$ 即可,比较简单。 时间复杂度 $\mathcal{O}(p\sqrt{p}+T\log n)$。 ===== H. Hard String Problem ===== **题目大意**:给你 $n$ 个串,但是每个串实际上是所给串的无限循环。求公共子串数量。 **题解**:首先注意到,每个串可以简化为最小循环,并转换为最小表示。相同的串可以删除。如果此时只剩一个串了,那么自然有无限个串。否则,考虑最短的串 $s$ 和 $t$。如果它们有一个长度 $\ge|s|+|t|$ 的公共子串,根据弱周期引理,$\gcd(|s|,|t|)$ 也是它们的周期,那么假如 $|s|\neq|t|$,与最小循环矛盾;否则与 $s\neq t$ 矛盾。因此公共子串最长为 $|s|+|t|-1$。这时将每个串循环几遍,使得包括所有这么长的子串即可。容易发现,除 $s,t$ 外的串长度至多变为原来的 $3$ 倍,因而仍能保证总串长,变为了经典 SAM 题。
2020-2021/teams/intrepidsword/2020-nowcoder-multi-8.txt
· 最后更改: 2020/08/05 11:45 由
admin
页面工具
显示页面
修订记录
反向链接
Copy this page
导出 PDF
回到顶部