zoukankan      html  css  js  c++  java
  • 关于 字符串 的一些认识

    先说明一点:我字符串学得不好...

    (CSP) 之前貌似只有 哈希,KMP,Manacher 会有用

    AC 自动机建议 (CSP) 前有所了解,省选前一定要学透彻

    (CSP) 后强烈建议学好 SA 和 SAM ,讲课要找一个靠谱的人讲(__wfx 讲的我很长一段时间都怀疑人生)

    PAM 可以看情况学。

    哈希

    挺神奇的一种思路,把字符串的判定相同由 (O(n)) 变成了 (O(1)),往set/vector等容器里存的时候空间也小了很多。

    然而字符串问题中有很多是匹配问题,所以哈希用途很广。

    一段区间的hash可以通过O(n)预处理后O(1)求.

    hash放到树上也可以O(n)预处理后O(1)求.

    KMP

    匹配字符串的利器,时间复杂度也很优秀

    Manacher

    求回文的利器,知道回文半径后很多回文字符串题都变得很简单。

    和PAM的一个区别:Manacher 需要离线,PAM可以在线。

    AC 自动机

    和 KMP 有相似之处,只不过AC自动机可以用来解决多串匹配问题

    SA

    求出 heigth 数组后能干好多东西。空间还小,建议学会 (O(nlogn)) 的求法,(O(n)) 的求法没太大必要学

    SAM

    解决字符串问题的大杀器,注意字符集的大小会影响时间复杂度和空间复杂度。

    如果出题人很毒瘤的话,一些问题只能用SA来解决(虽然SA能解决的SAM也能解决)

  • 相关阅读:
    TransGAN
    Paper-About-GAN (3)
    VAE的Pytorch实现
    Lua_元表
    Kong网关1_service与route
    Win系统Notepad++中使用Json、xml格式化插件
    Linux下Konga的安装
    Linux下设置pgsql远程访问
    Linux中查看端口占用情况
    Mysql使用存储过程插入十万条数据
  • 原文地址:https://www.cnblogs.com/wljss/p/13138940.html
Copyright © 2011-2022 走看看