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

枚举第 \(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

相关文章:

  • 2021-07-03
  • 2021-09-13
  • 2021-05-28
  • 2022-01-01
  • 2021-09-05
  • 2021-11-29
  • 2022-12-23
  • 2021-05-10
猜你喜欢
  • 2022-12-23
  • 2021-06-17
  • 2021-10-29
  • 2021-08-02
  • 2022-12-23
  • 2021-05-21
相关资源
相似解决方案