您的位置:首页 > 其它

利用线段树统计区间内不同种类的个数

2017-08-06 21:45 211 查看
想到写这个是因为今年多校联合训练3的1004题

题目中有一个子问题是求一个串内不同数的种类数数 最小的区间。

官方题解(http://bestcoder.hdu.edu.cn/blog/2017-multi-university-training-contest-4-solutions-by-%e9%99%88%e6%9d%be%e6%9d%a8/

是利用线段树来处理的:

首先,预处理一下字符串,求出每到一个点 i ,它之前的最近的和它相同的数所在的坐标 pre[i] 。

我们从0开始依次枚举字符串中的字符,假设当前枚举到i点,则将区间pre[i]+1 ~ i 全部加1 ,这样,此时线段树中每个单节点x中存储的值 就是 区间 [x,i] 中的种类个数。

这样我们就可以在 O(nlogn) 的时间复杂度内求出所有区间的种类数 的最小值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: