文章出处: http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents
原题:http://codeforces.com/problemset/problem/213/E
尼玛,这是研究题解都研究了半天,巨弱啊
开始看成是连续的子串,然后就直接HASH枚举了一下,果断跪。
然后就想到可以不连续,然后就没啥想法了。
最终还是用线段树去维护一个HASH
按数字顺序,依次插入线段树,然后对整个区间求HASH。其实就是比较的是整个区间的相对顺序是否 和A串一致。
比如说A串中是1 3 2
那么将第二个串的1 2 3插入到线段树中后,如果其相对顺序也是1 3 2 那么HASH值肯定一样。
但是注意的是,如果继续插入4,肯定要把1删掉,那么这时候的HASH值是2,3,4的组合HASH。
可以发现每一权都加了1,那么这个预处理一下就可以了
HASH我还是习惯性地两次HASH,减少错误的可能性
本文详细探讨了一种解决复杂排列组合问题的方法,通过使用线段树和哈希算法来优化查找效率,避免了传统的连续子串匹配带来的性能瓶颈。文中还介绍了如何在特定条件下利用线段树维护哈希值,以及如何通过比较整个区间相对顺序来验证子序列一致性。此方法适用于处理大型数据集,特别适合于需要频繁进行排列组合判断的场景。
8555

被折叠的 条评论
为什么被折叠?



