luogu 3281 数数
Posted cjc030205
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu 3281 数数相关的知识,希望对你有一定的参考价值。
设f[n]为串s[1...n]的答案,suf[n]为串s[1...n]的后缀和
假设串n的长度为len[n],现在在串s[1...n]后面增加一个字符p
考虑增加字符p后相较于原来的字符串多了哪些子串,
明显是(s[1...n]+p,s[2...n]+p,s[3...n]+p,...,p)
对原来答案增加的贡献是(newp = suf[n]*B+(len[n]+1)*p),所以现在的答案是$ newp+lastans$;
定义(S[n])为(0+1+2+3+...+n)的和
假设现在随便填(先考虑位数不足的情况)
每个位置有(0~B-1)共(B)种填法
同时因为我们注意到了一共会有(B)种填法,对原来的(f[n])的答案转移时也应该$*B $
所以对原来增加的贡献为(sum newp = B^2*suf[n]+(len[n]+1)*S[B-1]);
但是这是前面只有一种后缀的情况
假设以(n)为结尾的有(sdif[n])种后缀,那么实际贡献为(sum newp = B^2*suf[n]+sdif[n]*(len[n]+1)*S[B-1])
现在考虑在串(s[1...n])加入一个字符(p)后,包含(p)的后缀数的计算。
假设当前位随便填写,那么一共有(B)种填法,
如果当前位独立算做一个后缀一共有(B)种
如果联合之前的位,那么一共就有(sdif[n]*B)种后缀
所以包含(p)的一共有(sdif[n]*B+B)种后缀
以上是关于luogu 3281 数数的主要内容,如果未能解决你的问题,请参考以下文章