CF1810F 题解

· · 题解

注意到,一个答案 x 可行当且仅当 \sum_{i=1}^n{m^{a_i}} \leq m^x

证明

考虑贪心,当答案为 x 时,a_i 一定会被放在 x-a_i 层,这样必然是最优的,那么 m 个放在 k 层的数就会占用一个 k-1 层的位置,这正是 m 进制下的加法进位过程,所以说原序列最优排列下的位置占用情况在 10 进制下正是 \sum_{i=1}^n{m^{a_i}},则恰好有 x 层在 10 进制下就代表着 m^x,所以结论成立。

那么也就是说 x 的最小值就是 \lceil \log_m{\sum_{i=1}^n{m^{a_i}}} \rceil,所以实际上我们要维护一个数并查询其 \log_m 的值,这个东西可以使用线段树或者珂朵莉树维护。