一道好题
背景:大爷给机房小伙伴们口述了一道题,可是yy了半天QAQ
题意:给一个字符串(10^5),无限重复,多次(10^5)询问,求第x(10^9)位之前本质不同的子串个数
考虑每次往后添加一个串,求新增的本质不同的子串个数
首先,形成的本质不同的子串一定是从最前面的串到最后面的串的(蓝线)
考虑该情况下相同的子串:终点在同一个串内(绿线),终点在前一个串内(黄线)
那么要想在该情况下相同,需要满足的性质如下:
我们发现,蓝色实心区域应和黄色实心区域相同,那么原字符串纯循环........
所以我们将原字符串拆完后,单独处理第一次拼接,之后每次加上len^2即可.......
代码懒得写了,用后缀数组瞎搞就行了