苹果大神太猛了

这个题

考虑暴力 dp,每次加入一条斜线,\(3^k\) 记录斜线上的值。打表或其它方法可以发现斜线上的差分为 \(0\)\(-1\),即缩掉连续段以后形如 \(210210210210...\),这样可以轻松解决 \(n=1\):用 \((首项,连续段长度)\) 表示一条斜线,可以 \(O(1)\) 实现两条斜线的转移。

\(n>1\) 考虑对于每个位置都做一遍 \(n=1\) 的(对 \([i,i+k]\)\(n=1\))。在自动机上描述判定,形如三条轨道,\(+0\) 相当于自环,\(-1\) 是在一条轨道上前进一步,\(+1\) 是后退一步,无法后退就切换到下一条轨道。仔细研究自动机上的判定发现变成差分数组后再做前缀和,限制形如 \([i,i+k]\) 的最大值 mod 3 要为某个数。

观察到滑动窗口时最大值只有 \(0/1/-1\) 三种变化,钦定窗口内最靠前的最大值位置后可以转移,时间复杂度 \(O((n+k)^2)\)

posted @ 2026-07-09 18:31  BYR_KKK  阅读(38)  评论(0)    收藏  举报