线段树 + 字符串Hash
来源:互联网 发布:seed软件 编辑:程序博客网 时间:2024/05/21 11:57
Kefa and Watch
Problem's Link
Mean:
给你一个长度为n的字符串s,有两种操作:
1 L R C : 把s[l,r]全部变为c;
2 L R d : 询问s[l,r]是否是周期为d的重复串。
analyse:
n最大为1e5,且m+k最大也为1e5,这就要求操作1和操作2都要采用logn的算法,所以用线段树.
对于更新操作,使用区间更新就可解决。
主要是如何在logn的时间内完成询问操作.
我们采用线段树维护hash值的方法.
结合于类似KMP的性质,我们发现,字符串[l,r]有长度为w的循环节,只需要使得[l,r-w]=[l+w,r]即可。证明过程看这里
这题的hash不同于普通的字符串hash,因为涉及到动态修改,所以需要预先处理出所有的base,在修改的时候直接用.
Time complexity: O(N)
view code
0 0
- 线段树 + 字符串Hash
- bnu36907 Subpalindromes 字符串hash+线段树
- ural1989(字符串hash+线段树)
- hdu 3973 字符串hash+线段树
- hdu 4622 Reincarnation(字符串Hash+线段树)
- URAL 1989 Subpalindromes(字符串HASH&线段树单点更新)
- 【线段树+字符串hash】 codeforces 213E Two Permutations
- hdu 3973 字符串hash+线段树动态维护
- URAL 1989 Subpalindromes(线段树单点修改+字符串hash)
- codeforces 321# E. Kefa and Watch (线段树+字符串hash)
- codeforces 580 E. Kefa and Watch (字符串hash + 线段树)
- 字符串hash+线段树 Codeforces580E Kefa and Watch
- Codeforces Round #321 (Div. 2)E 线段树+字符串hash
- [字符串Hash 线段树] AOJ 2734 Donut Decoration
- 线段树+hash+codeforces213E
- hdu 3973(hash+线段树)
- Codeforces452F Permutation -- 线段树 + Hash
- hdu 3973 AC's String(字符串hash+线段树单点修改)
- 构造
- 特征根法求通项+广义Fibonacci数列找循环节
- dp + 状态压缩
- 网络电视精灵
- oj-刷题 汉诺塔问题
- 线段树 + 字符串Hash
- 二分图匹配 + 最小点覆盖
- 二分 + 模拟
- 树形dp
- 树形dp
- 数论 + 容斥
- Linux下tar与gzip的简单解压缩
- hbase基础知识及原理
- C++异常处理