这个题当时tle到哭,心态爆炸,也几乎直接导致了没去看很简单的G,心情复杂。
这个判重刚好卡unordered_set,怎么都过不了,只能自己手写Hash判重。另外一个优化的点就是一定要边Manachar边计算,我一开始写的跑一遍Manacher之后枚举中点然后计算左右端点(那不就退化成n^2了嗯我当时就这么傻)。一边Manacher一边做,好处就是关于某个点对称的重复的回文串只会被算一次!这也是Manacher自身的算法决定的。。这个题其实出题人就是想让这么做的,不然要想计算所有出现的回文串的(不判重)MOD,应该是只能n^2吧。。(或许SAM可以?我没想过)。
需要巩固的地方:字符串Hash,字符串子串预处理(取模等),Manacher的原理的深刻理解。
丑陋的代码,后面打注释的是我当时脑子抽了写的n^2算法,哈哈
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include