[ABC328C] Consecutive 题解

发布时间 2023-11-24 19:40:18作者: gsczl71

给一个长度为 \(n\) 的字符串 \(s\)\(q\) 次询问,每一次 \(l\)\(r\) 区间内有多少个 \(s_i\) 等于 \(s_{i-1}\)

\(10^5\) 的数据 \(O(N^2)\) 暴力肯定行不通。于是我们考虑预处理前缀和,处理到 \(i\) 下标以及之前有多少个 \(s_i\) 等于 \(s_{i-1}\)

每一次查询 \(O(1)\) 回答。注意要减去的边界是 \(qzh_l\),因为 \(qzh_l\) 其实是包含着 \(s_l\)\(s_{l-1}\) 的贡献。所以这个不能算入这个区间的贡献中。因此前缀和的公式应该是 \(qzh_r - qzh_l\)

link