首页 > 其他分享 >CF1845C

CF1845C

时间:2023-08-17 10:13:41浏览次数:29  
标签:10n 10m 复杂度 CF1845C 编号 dp

原题

翻译

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

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

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

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

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

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

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

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

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

标签:10n,10m,复杂度,CF1845C,编号,dp
From: https://www.cnblogs.com/fox-konata/p/17636854.html

相关文章

  • CF1845C Strong Password
    思路这场edu爆炸了,特此记录。由于\(m\le10\),因此可以直接考虑搜索。对于定义状态为\((idx,cur)\),表示当前在填密码的第\(idx\)位,且使用了\(s\)中的前\(cur\)个字符。首先注意到对于同一个数字,如果其在\(s\)中出现了不止一次,那么出现在前边的显然比出现在后边的潜......