CF1845C

发布时间 2023-08-17 10:05:11作者: FOX_konata

原题

翻译

以为是数位dp,想了很久,最后发现贪心好巧妙

但其实数位dp也能做,只是写起来比较麻烦,(而且我看错题了/kk)

首先naive的做法是很好想的,即枚举在\(l\)\(r\)之间的数,直接判断

怎么判断呢?无疑是在\(s\)中找到第一个下标\(>i\)的这个数的位置,然后让\(i\)赋值为这个位置,一直重复

于是我们可以预处理出每个位置\(i\)后缀走\(0-9\)的编号最小的位置

我们发现一个什么问题?编号越大的点很明显出现的数越少

所以我们只需要每次走编号最大的点即可

预处理\(pos\)的复杂度为\(O(10n)\),计算的复杂度是\(O(10m)\)

总复杂度\(O(10n + 10m)\)