..
UOJ Round #20
A. 跳蚤电话
9
$n \le 10$
暴搜。
20
$n \le 20$
状压 DP。
时间复杂度 $\mathcal O(2^n n)$。
34
从 $1$ 号城市到任意城市的最短通信路径上城市个数不超过 $3$
手玩公式。
100
\[f_i = \prod\limits_{j \in subtree_i} \frac{1}{size_j} (1 + \sum \limits_{k \in son_j} \frac{size_k}{size_j - size_k})\]$n \le 10^5$
预处理逆元。
时间复杂度 $\mathcal O(n)$。
B. 机器蚤分组
9
$n, q \le 10$
暴搜。
27
$n, q \le 100$
使用网络流求解 DAG 最小链覆盖。
48
$n, q \le 1000$
根据 Dilworth定理,最小链覆盖等于最长反链。
容易发现可以选择某个长度 $len$ 的所有子串作为一个极长反链,大胆猜测对不同的 $len$ 取最大值就是最长反链。
使用 SA 计算每个长度的不同子串个数。
时间复杂度 $\mathcal O(q n \log n)$。
C. 金坷垃
3
$\forall 1 \le i \lt n, a_i + m \le a_{i + 1}$
输出 $a_i + \frac{m}{2}$。
18
$\forall 1 \le i \lt n, a_i = a_{i + 1}$
一个结论,$n$ 个 $[0,1]$ 随机实数第 $i$ 小的期望是 $\frac{i}{n + 1}$,答案为 $a + \frac{m_i}{n + 1}$。