题意:
解法:
如果没有修改操作, 容易想到dp维护每个前缀不出现的最小操作次数.
带修改操作的dp,容易想到线段树维护矩阵乘法.
矩阵乘法性质:
ans[i][j]=op1(ans[i][j],op2(a[i][k],b[k][j]))
这里的op1和op2可以自己定义
经典的矩阵乘法op1为加法,op2为乘法
令d[i][0/1/2]为不存在前缀a,ab,abc的最小操作次数
转移方程:
d[i][0]=d[i-1][0]+(s[i]=='a')
d[i][1]=min(d[i-1][0], d[i-1][1]+(s[i]=='b'))
d[i][2]=min(d[i-1][0], d[i-1][1], d[i-1][2]+(s[i]=='c'))
令op1为min, op2为+
以矩阵形式描述转移方程:
原矩阵x为:
[d[i-1][0]]
[d[i-1][1]]
[d[i-1][2]]
系数矩阵A为:
[s[i]=='a'] [inf] [inf]
[0]