2 条题解

  • 0
    @ 2026-6-12 19:54:02

    官方题解在干什么啊???

    首先注意到一个数如果位数能更小,取更小总是更优的。

    那么具体能多小呢?

    首先,显然如果 aa 的位数 >b>b 的位数,则有 a>ba>b。设 wiw_i 为 aia_i 的位数,则显然有 wi≤wi+1w_i\le w_{i+1}。

    紧接着,考虑到如果位数是相同的,则 a,ba,b 的大小关系和它们的字典序大小关系一致。于是如果有 pi>pi+1p_i>p_{i+1},则有 wi+1=wi+1w_i+1=w_{i+1}。

    求出 wiw_i 后,直接按找字典序贪心地取最小字典序即可。正确性显然:

    • 依据 wiw_i 的构造,可以保证 ai<ai+1a_i<a_{i+1};
    • 由于单个数时 wiw_i 相同,故字典序最小时就是最小的。

    那么如何取最小字典序?这一个数的 ww 比前面的大,那么直接补 00 即可;否则,需要在最后一位上 +1+1。前面的位都不用变。

    可以直接单调栈维护,时间复杂度 O(n)O(n),把 std 的四毛子 O(n)O(n) 按在地上摩擦。

    [Sleeping Cup #11] Interstellar JavaScript Seminar

    信息

    ID
    273
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    8
    已通过
    3
    上传者