题意 给一个长度不超过200000的字符串s,假定有一个字符串a,这个字符串在s中出现次数是f(a),你需要让$|a|f(a)$最大. 但是有一些位置是禁止的,即以该位置为结束位置的字符串不计数. 分析 先不考虑禁止的位置 那么可以求出后缀数组,枚举每一个height[i]作为|a|,向两边扩展,看看其在s中出现了多少次 即找到最宽的[l,r],使得这个区间内最小的数就时height[i] 这只需要两遍单调栈求出每个位置最靠近的小于它的数在哪里就行了 于是该答案就是(r-l+2)*height[…