正解:AC自动机
解题报告:
这道题,首先想到暴力思路还是不难的,首先看到y有那么多个,菜鸡如我还不怎么会可持久化之类的,那就直接排个序什么的然后按顺序做就好,这样听说有70pts
然后思考一下,正解怎么做呢QAQ
回到AC自动机中关于fail指针的定义上来,因为fail指针指向的是最长后缀,这意味着,假如a指向b,那么a字符串中一定包含有root到b这一段字符串
于是假如我们要统计的字符串x,就只需要统计有多少个fail指针直接或间接指向x的ed那个点就是as辣
那不就是,建一棵fail树,求对于节点x的子树中有多少个节点是属于y的嘛
考虑到dfs序的性质,那不就是求两个y之间有多少个节点嘛,这个就很好解决了鸭,就每次出现的时候+1回溯的时候-1就欧克了
然后如果当前节点是y,就说明当前相关的询问都做完辣,就可以求值辣
听说要树状数组维护一波?等下解释QAQ