题意
有长度为 nnn 的序列 {
an}\{a_n\}{
an}。设 f([a1,a2,..,an],k)f([a_1,a_2,..,a_n],k)f([a1,a2,..,an],k) 表示最少的操作次数,使得 aaa 全为 000。每次操作你可以选择一个区间 [l,r][l,r][l,r],使得 ∀i∈[l,r],ai=(ai+1) mod k\forall i \in [l,r],a_i=(a_i+1)~mod~k∀i∈[l,r],ai=(ai+1) mod k 或者 ∀i∈[l,r],ai=(ai−1) mod k\forall i \in [l,r],a_i=(a_i-1)~mod~k∀i∈[l,r],ai=(ai−1) mod k。
现在有 qqq 次询问,每次询问给出 l,r,kl,r,kl,r,k,求 f([al,...,ar],k)f([a_l,...,a_r],k)f([al,...,ar],k),每个询问独立。
其中,1≤n≤2×105,k≤230,0≤ai<k1\le n\le 2\times 10^5,k\le 2^{30},0\le a_i<k1≤n≤2×105,k≤230,0≤ai<k。
分析
先不考虑模 kkk,问题就是每次可以给一段区间加一或减一,求最少多少次能把整个序列全变成 000。
优化操作次数:序列转换与模k操作的最小代价

最低0.47元/天 解锁文章
264

被折叠的 条评论
为什么被折叠?



