赛时行向量开头的线段树 push_up 矩阵乘写反了,100→0100\to 0100→0。。。
题意
给定 A[1,n]A_{[1,n]}A[1,n],满足 Ai∈{ −1,0,1}A_i\in \{-1,0,1\}Ai∈{ −1,0,1},mmm 次操作:
0 x y:令 Ax→yA_x\to yAx→y,满足 y∈{ −1,0,1}y\in \{-1,0,1\}y∈{ −1,0,1}。1 x y:定义一次操作为 Ai→Ai+Ai−1(x<i≤y)A_i\to A_i+A_{i-1}(x<i\leq y)Ai→Ai+Ai−1(x<i≤y),计算最少多少次操作可以使 A[x,y]A_{[x,y]}A[x,y] 非严格单调递增,无法满足输出 −1-1−1。
1≤n,m≤1061\leq n,m\leq 10^61≤n,m≤106。
题目条件是非严格单调递增,非严格单调递增的操作次数显然优于严格,所以我们大胆猜测修改后的序列 Bi∈{ −1,0,1}B_i\in \{-1,0,1\}Bi∈{ −1,0,1}(实际上很显然)。然后我们就可以 DP 了。
状态定义:令 fi,0/1/2f_{i,0/1/2}fi,0/1/2 表示前 iii 项已经非严格单调递增且第 iii 项的取值为 −1/0/1-1/0/1−1/0/1 的最小操作次数。先考虑初始化,显然是 f1,a1+1=0f_{1,a_1+1}=0f1,a1+1=0,剩余 fff 取 ∞\infty∞。然后我们对 AiA_iAi 的原始取值分类讨论:
- Ai=0A_i=0Ai=0:此时想让 AiA_iA

最低0.47元/天 解锁文章
3433

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



