2021.12.13 模拟赛

最近摆得太厉害了。

“讲过的题还不会?”

一开题就发现自己 A 了两道,大为震撼。然后发现是去年我爆零的一场比赛。

T1

先判一手相同。

\(B\) 矩阵出现超过 \(1\) 个 \(\texttt 1\) 的行 / 列是不能操作的。这些行 / 列中为 \(\texttt 1\) 的列 / 行也是不能操作的。

去掉不能操作的行 / 列,新的矩阵可以随意操作。由于 \(B'\) 中任意行 / 列 \(\texttt 1\) 的个数不超过 \(1\) 个,那么只要 \(A'\) 中存在入口 \(\texttt 0\),一定存在方案可以得到 \(B'\)。

数据水的很,代码写一半交上去就能过。

T2

考虑每个 \(p^k,p\in\mathbf{prime}\) 的贡献,也就是让求

\[\sum_{p\in\mathbf{prime}}\sum_i\left\lfloor\frac{n}{p^i}\right\rfloor \]

根号分治:

  • 对于 \(\le \sqrt n\) 的质数,暴力。

  • 对于 \(> \sqrt n\) 的质数,其指数至多为 \(1\),也就是计算

    \[\sum_{\substack{p\in\mathbf{prime}\\p>\sqrt n}}\left\lfloor\frac{n}{p}\right\rfloor \]

    整除分块,需要求的就是区间质数个数。

质数个数前缀和,考虑筛一类的 DP。设 \(F_i(n)\) 表示对于前 \(i\) 个质数,\(1\dots n\) 为质数或者 \(\mathrm{minp}>p_i\) 的数的个数,转移为

\[F_i(n)=F_{i-1}(n)-(F_{i-1}\left(\left\lfloor\frac{n}{p_i}\right\rfloor\right)-(i-1)). \]

要求 \(p_i\le \sqrt n\)。复杂度就是 min_25 筛第一部分的复杂度,\(\mathcal O\left(\frac{n^{\frac 34}}{\log n}\right)\)。

具体实现还是需要写成非递归形式,对下标根号分治将 \(F\) 的空间降至 \(\mathcal O(\sqrt n)\)。

T3

区间 DP,记录 \(f(l,r)\) 表示完全包含于 \([l,r]\) 的所有鱼的答案,枚举聚集点转移。

上一篇:CS188-pj2-Multiagent


下一篇:windows 常用快捷键和dos命令