[AGC011E] Increasing Numbers

\(\mathcal Link\)

思维题。

以下是官方做法。

考虑将不降数不进位相加,则最终结果可以看成 \(\displaystyle \sum_{i=0}^\infty a_i\cdot 10^i\),其中 \(a_i\geq a_{i+1}\)

显然,对于一个固定的 \(a\) 序列,最优解不小于 \(\left\lceil\dfrac {a_0}{9}\right\rceil\) ,且存在一种恰好为 \(\left\lceil\dfrac {a_0}{9}\right\rceil\)的方案,构造如下。

\(x_i\) 表示第 \(i\) 个数,则考虑其十进制表示 \(\displaystyle x_i=\sum_{j=0}^{\infty} x_{i,j}\times 10^j\)\(x_{i,j}=\min(9,a_j-9\times (i-1))\)
所以我们要做的是让 \(a_0\) 最小。

考虑等价变换。将一种划分等价为

\[N=\sum_{i=1}^{a_0} 111\cdots1=\sum_{i=1}^{a_0} \dfrac{10^{r_i}-1}{9} \]

\[9N+a_0=\sum_{i=1}^{a_0} 10^{r_i} \]

考虑到 \(\sum_{i=1}^{a_0} 10^{r_i}\) 能且仅能表示所有数字和为 \(t\) 的数。
可以发现 \(a_0\) 可行充要于左边数字和小于等于 \(a_0\) 且左边数字和与 \(a_0\)\(9\) 同余,但模 \(9\) 同余的条件显然是满足的。

发现答案不是很大,直接枚举即可,显然上界 \(\mathcal O(n)\) 次,因此复杂度为 \(\mathcal O(n)\)


考虑一个更简单的做法:每次直接选一个最大的 Increasing Number。

显然,对 \(a\) 序列进行如下操作不会使答案变大:

posted @ 2023-02-19 23:35  pref_ctrl27  阅读(36)  评论(0)    收藏  举报