{"shas":[["dcdc95e115dcd0870dff836126acbb67506252b2","8791b061d7df8add1114d9eb840ead44c77834d8@gmail.com","KMP模板","Xijin Zhang"],["336133efeb27b93a6ca8db4a3594da34305213f2","8791b061d7df8add1114d9eb840ead44c77834d8@gmail.com","POJ 3461 裸KMP，还是110ms。。。","Xijin Zhang"],["c1cf6d745bb68f3d5ac7bcc5e5660751df61b48a","8791b061d7df8add1114d9eb840ead44c77834d8@gmail.com","KMP基本模板修正","Xijin Zhang"],["644758f60d4d853fdb547460b6fc56210a028566","8791b061d7df8add1114d9eb840ead44c77834d8@gmail.com","HDU 3068 回文模板实测通过","Xijin Zhang"],["786c7808aaa84e6840d640ac6853b50b6f82fe82","8791b061d7df8add1114d9eb840ead44c77834d8@gmail.com","后缀数组模板，包括sa,rank,height和lcp函数（如果不需要lcp函数，就不用log和rmq）","Xijin Zhang"],["46aed480f13a31afda3807f5c52dea35160ecfdc","8791b061d7df8add1114d9eb840ead44c77834d8@gmail.com","POJ 2774 两串最长公共子串，后缀数组，1a，注意两个串的连接方法，中间用0隔开，init[n]是0，串总长是n＋1","Xijin Zhang"],["2f34fb54d75da6704e83a2588a4484bf0351d2ea","8791b061d7df8add1114d9eb840ead44c77834d8@gmail.com","POJ 1743 找最长不重叠同差等差数列，有点寻找模式的味道，转化：两项作差作为串，就变为找最长重复子串。二分答案变成判定问题，判定k长的存不存在，按sa顺序划分后缀，由于high数组性质，如果两个后缀的high<k，跨过此处的后缀对公共前缀一定<k，没有意思，进行分割，且分割后任意同组后缀对公共子串>=k，故只要考虑同组中sa min和max即间隔最远的间隔，如果大于k（不能等于，由于作差），则可以。二分答案和分组很有用，求[有限制]的最长子串（至少出现k次的，>k个都出现过的，就是大于k的公共貌似不可）","Xijin Zhang"]],"ref":"refs/heads/master","size":7,"head":"2f34fb54d75da6704e83a2588a4484bf0351d2ea","push_id":37440142}