2 条题解

  • 3
    @ 2026-10-22 20:11:24

    T3 < T1T2T4
    此做法简单于bz做法(我声称最简单的)。
    区别在于Part2.

    第一空

    对于一个栅栏 ii,他能粉刷到的最高的方案是粉刷包含 ii 且长度为 xx 的连续区间中栅栏高度的最小值的最大值。

    因为粉刷一个区间的最大高度是区间中栅栏高度的最小值,我们要让这个值最大,以让栅栏 ii的粉刷高度最大。

    可以使用滑动窗口解决,复杂度 O(n)O(n)。

    第二空

    对于一个已经刷了,且高度为 coloricolor_i的栅栏,我们可以把连续相同 colorcolor 的栅栏看成一组,若一组有 cntcnt 个栅栏,我么对他的粉刷次数就是 ⌈cntx⌉\left\lceil \frac{\mathrm{cnt}}{x} \right\rceil,因为可以重复刷,所以向上取整是对的。

    单独对于第二空贴出代码: clr是color ans2是第二空的答案

        int cnt=1;
        for(int i=2;i<=n+1;i++){
            if(clr[i]!=0&&clr[i]==clr[i-1]) cnt++;
            else ans2+=cnt/x+(cnt%x==0?0:1),cnt=1;
        }
    
    • @ 2026-10-23 8:40:10

      提个建议:$\lceil{\frac{a}{b}}\rceil = \lfloor\frac{a+b-1}{b}\rfloor$

信息

ID
2819
时间
1000ms
内存
128MiB
难度
6
标签
(无)
递交数
19
已通过
8
上传者