利用线段树统计区间内不同种类的个数
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) 的时间复杂度内求出所有区间的种类数 的最小值
题目中有一个子问题是求一个串内不同数的种类数数 最小的区间。
官方题解(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) 的时间复杂度内求出所有区间的种类数 的最小值
相关文章推荐
- HDU 5869区间CGD不同种类数---树状数组+map统计区间不同种类数(离线)
- 华为OJ——统计不同的字符的种类
- 主席树|线段树(区间不同的数的个数)spoj3267
- bzoj3038 上帝造题的七分钟2(线段树区间开方统计和)
- UPC 2224 Boring Counting (离线线段树,统计区间[l,r]之间大小在[A,B]中的数的个数)
- SPOJ DQUERY D-query(离线线段树,查区间不同数字个数)
- poj3368--线段树统计区间的最大频率
- 1012: [JSOI2008]最大数maxnumber 线段树区间统计
- hdu 1540 Tunnel Warfare(线段树区间统计)
- Hdu4417线段树求区间统计+离线处理 线段树 树状数组
- poj 2777 Count Color(线段树 Lazy-Tag思想 成段更新+区间统计)
- 线段树(区间更新以及统计片段颜色)
- POJ 2528——Mayor's posters——————【线段树区间替换、找存在的不同区间】
- 利用结构体让线段树有一个区间值的方法更新区间
- hdu5475(线段树单点修改,统计区间乘积)
- POJ 3468 A Simple Problem with Integers-利用lzy进行区间更新的线段树
- hdu 3333 Turing Tree(线段树求区间内不同值之和+离线处理)
- [CF#365 (Div. 2) Mishka and Interesting sum] 线段树离线处理区间不同数
- BZOJ-1036: [ZJOI2008]树的统计Count (树链剖分 线段树 单点修改 区间查询 入门题)
- TyvjOJ题目 P1473 校门外的树3(线段树区间染色种类数不覆盖)