2024Oct&Nov杂题
CF1093F Vasya and Array CF LG
用时:5 分钟
放过 \(O(nk)\) 那这题不就是送的了么?
有一个显而易见的 DP,设 \(f_{i,j}\) 表示考虑前 \(i\) 个,第 \(i\) 个数最终是 \(j\) 的方案数。
有:\(f_{i,j}=\sum_{\max(0,i-len+1) \leq k < i}\sum_{c \neq j}f_{k,c}[[k+1,i] 中只有 j 与 -1]\)。
交换求和顺序:
\[f_{i,j}=\sum_{\max(0,i-len+1) \leq k < i}[[k+1,i] 中只有 j 与 -1]\sum_{c \neq j}f_{k,c}
\]
那个艾弗森括号决定了可以转移的 \(k\) 是一个以 \(i\) 结尾的区间。\(k|([k+1,i] 中只有 j 与 -1)\) 的最小位置是容易维护的,再跟 \(i-len+1\) 取个 \(\max\) 即可。
维护 \(\sum_{c \neq j}f_{k,c}\) 以及他的前缀和就做完了。

浙公网安备 33010602011771号