P6553 Strings of Monody

这里提供一种无脑的非数据结构方法。

很明显不能暴力,我们尝试记录下字符串 145 出现次数,这样单次修改时可以做到最坏 O(n)O(n) 的复杂度,与暴力一样。但是询问可以做到 O(log2n)O(\log_2 n) 复杂度,也就是快速幂的复杂度。

但是为了区别与其他题解:

我用哈希!

哈希通常是字符串哈希,但是单个字符不也可以哈希吗?因为我哈希没学好,所以我们预处理时用 rand() 函数随机找到一个值,在哈希时与 char 类型字符哈希。加上快速幂和各种玄学优化。

但是明显我们可以预处理,因为只会出现 145,所以考虑预处理 145 的哈希值,这样就无需重复计算。

至于时间,也不是很长,不开 O2 也就 160ms160ms

不过好歹能过,100ms100ms 限制有点毒瘤啊!

代码过长,点这里

posted @ 2022-01-31 22:30  HappyBobb  阅读(6)  评论(0)    收藏  举报  来源