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也能解决)

  • 相关阅读:
    liunx知识点滴积累(1)
    Regsvr32命令的使用
    QTP知识点滴积累
    LoadRunner的Apache的监控
    CMM和过程改进的“妙语” 集锦
    Linux 性能调优的几种方法
    数据库学习笔录(转载)
    Windows性能管理解析
    使用NUnit在.Net编程中进行单元测试
    Google 工程师文化 互助篇
  • 原文地址:https://www.cnblogs.com/wljss/p/13138940.html
Copyright © 2011-2022 走看看