Loading

题解-UOJ#696. 【候选队互测2022】理论复杂度

比赛的时候瞎搞了个做法,过了,就写篇题解吧。

枚举第 \(r\) 个点的权值,所求即为:\((\prod_{i < r} \frac{1}{1-x^{i}}) \sum_{i} \frac{x^{ir}}{\prod_{j \le i} (1-x^{j})^2}\)

问题的关键就在算 \(\sum_{i} \frac{x^{ir}}{\prod_{j \le i} (1-x^{j})^2}\)

考虑根号分治。

  • 对于 \(i \le B\),我们暴力背包,时间复杂度 \(\Theta(nB)\)
  • 对于 \(i > B\),容易发现取 \(j > B\) 的元素一定不超过 \(\frac{n}{B}\) 个。那么我们设计 \(\rm DP\)\(dp_{i,j}\) 表示现在取了 \(i\) 个元素,和为 \(j\) 的方案数是多少。转移就是把当前所有元素的权值 \(+1\),并选择若干个 \(0\)。如果选择了 \(t\)\(0\),那么方案数是 \(t+1\)。可以通过类似前缀和优化的东西做到 \(\Theta(\frac{n^2}{B})\)。由于这题空间限制比较小,需要滚动数组。

\(B = \sqrt{n}\),我们得到了一个 \(\Theta(n \sqrt {n})\) 的做法。

aclink

经过卡常的 aclink

posted @ 2022-01-09 10:44  zhoukangyang  阅读(647)  评论(0编辑  收藏  举报