典,做过一遍就会了。
考虑设 \(f_{i, j}\) 表示从小到大到了\(i\),目前能够有 \(j\) 个数为 \(i\) 的不同集合方案数,转移写个前缀和可以简单做到 \(O(n^2)\)。
优化的契机就在于,这个合并的过程是指数级增长的,·每一层能够向后转移的点其实是很少的,因此用 vector 存下有用的状态即可做到 \(O(n \log n)\) 的复杂度。
典,做过一遍就会了。
考虑设 \(f_{i, j}\) 表示从小到大到了\(i\),目前能够有 \(j\) 个数为 \(i\) 的不同集合方案数,转移写个前缀和可以简单做到 \(O(n^2)\)。
优化的契机就在于,这个合并的过程是指数级增长的,·每一层能够向后转移的点其实是很少的,因此用 vector 存下有用的状态即可做到 \(O(n \log n)\) 的复杂度。