Loj 2312
题意:给出一个 n 位随机 01 串,定义 data(l,r)=max(LCP(Sufi,Sufj)∣i=j,l≤i,j≤r) 。
给出 m 个询问 [l,r] ,求
i=l∑r−1data(i,r)
题目说随机生成,那么估计LCP相同的概率为(21)len⋅Cr−l+12,在取40时,这个几率已经很小,我们直接对于每个后缀存前40个字符即可。考虑依次加入每个位置的后缀
我们发现对于一个区间[l,r]的答案,一定比[l+1,r],[l+2,r],…,[r−1,r]答案更大,因为他们是包含关系
那么我们可以运用这个单调性,还能发现答案是一块一块的,我们联想到数论分块的思想。
设pos(i,j)为[1,i]中后缀∃LCP=j的最大位置。
那么求答案我们分成一块一块地求,具体看代码注释。
知识点:
1、单调性运用 (类似品酒大会从后往前求答案)
2、离线思想 (按某元素排序)