想到写这个是因为今年多校联合训练3的1004题
题目中有一个子问题是求一个串内不同数的种类数数 最小的区间。
是利用线段树来处理的:
首先,预处理一下字符串,求出每到一个点 i ,它之前的最近的和它相同的数所在的坐标 pre[i] 。
我们从0开始依次枚举字符串中的字符,假设当前枚举到i点,则将区间pre[i]+1 ~ i 全部加1 ,这样,此时线段树中每个单节点x中存储的值 就是 区间 [x,i] 中的种类个数。
这样我们就可以在 O(nlogn) 的时间复杂度内求出所有区间的种类数 的最小值