[AGC011E] Increasing Numbers
思维题。
以下是官方做法。
考虑将不降数不进位相加,则最终结果可以看成 \(\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\) 序列进行如下操作不会使答案变大:

浙公网安备 33010602011771号