利用了bzoj3172提到的性质,x串在y串中的出现的次数即为在fail树上以x结尾节点为根的子树中有多少个节点在y串上所以很明显我们要离线解决,我们先把询问按y分类存起来然后我们顺着操作顺序来,出现一个字符就把fail树上对应节点标为1,删除之后就改为0:当一个串输出之后,我们就统计跟他有关的询问(查询x串结尾节点子树和)这种问题显然用dfs序+树状数组解决 ; type node=record y,next:longint; end; var i,j,n,m,len,tot,all,k,ll…