UOJ Round #6
A. 破解密码
20
$n \le 5$
暴搜。
时间复杂度 $\mathcal O(26^n n)$。
50
$n \le 100$
高斯消元。
时间复杂度 $\mathcal O(n^3)$。
100
$n \le 10^5$
设 $a_i$ 首字母为 $c$。
\[\begin{aligned} & h_{i + 1} \\ = & ((h_i - 26^{n - 1} \times \text{num}(c)) \times 26 + \text{num}(c)) \bmod p \\ = & (26 \times h_i - 26^n \times \text{num}(c) + \text{num}(c)) \bmod p \end{aligned}\]对于每个 $i$ 枚举 $c$ 验证是否合法即可。
注意当 $26^n = 1$ 时,$h_{i + 1} = 26 \times h_i \bmod p$,此时任意 $c$ 都是合法的。
只有当 $f(s) = h_0$ 时 $s$ 才是合法的答案,那么根据 $h_0$ 生成一个 $s$ 即可。
B. 智商锁
20
$k \le 100$ 且 $k \le 2$
$n$ 个点的环的生成树个数恰好为 $n$。
特判 $k = 0$ 的情况。
40
保证存在 $n \le 6$ 的图满足题意
$6$ 个点的标号无向图只有 $2^{\binom{6}{2}} = 2^{15}$ 个,暴搜出每一张图,用矩阵树定理计算其生成树个数。
60
$k = 3, 16, 125, 1296, 16807, 262144, 4782969, 229805564, 305655011, 988403481, 987167444, 826614133$
$n$ 个点的完全图生成树个数为 $n^{n - 2}$
70
$k = 110, 221, 667, 1457, 2021$
将 $k$ 分解质因数,用割边将若干 $k$ 很小的图连通起来。
根据乘法原理,连通后的图生成树个数为小图生成树个数之积。
100
$k \lt 998244353$
随机 1000 张点数为 12 的无向图,用矩阵树定理求出第 $i$ 张图的生成树个数 $f_i$。
对于每一个 $k$,我们试图找到一个四元组 $(a, b, c, d)$ 使得 $f_a \times f_b \times f_c \times f_d \equiv k \pmod 998244353$,这个显然可以 meet in middle。
C. 懒癌
10
每户人家都能看出其他每户人家的狗有没有得懒癌
如果有 $k$ 只生病的狗,一定会在第 $k$ 天传来第一次的枪声。
而且因为这 $k$ 个狗主人的状况是完全等价的,所以他们一定会同时开枪。
一个有 $k$ 只生病的狗的生病状况,对总开枪时间和总枪声数的贡献都是 $k$。
两问的答案都是 $\sum_{i = 1}^n \binom{n}{i} \times i$。