专栏文章

题解:AT_agc057_a [AGC057A] Antichain of Integer Strings

AT_agc057_a题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min3xylk
此快照首次捕获于
2025/12/01 20:10
3 个月前
此快照最后确认于
2025/12/01 20:10
3 个月前
查看原文

题解

可以注意到用位数少的一定不优,因为其向外拓展的方式更多导致不能用的数也越多。所以我们肯定先选择位数最多的,然后考虑剩下的还有哪些可以选。假设 rr 的位数为 kk,考虑 [max(10k1,l),r][\max(10^{k-1},l),r] 都可以选。现在我们要处理位数更少的情况。考虑 rr 的最高位,如果大于 1 那么说明长度为 k1k-1 的所有串已经全部被包含就不管了,否则就需要管。考虑 rr 对长度为 k1k-1 的串的限制一定是一段前缀,于是找到右端点即可。

代码

CPP
signed main(){
    for(int T = rd(); T--; pc('\n')){
        int l = rd(), r = rd();
        int x = 1; while(x * 10 <= r)x *= 10;
        if(x <= l)wt(r - l + 1);
        else{
            int s = r - x + 1; x /= 10;
            if(x * 20 > r)s += x * 10 - max(max(x, l - 1), max(r / 10, r - (x * 10))) - 1;
            wt(s);
        }
    }
    return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...