好吧,这场比赛被完虐,3+3来的太不容易了,这题在之前见过类似的问题,不过那题至今没过,还是处于TLE的状态- -
题号是UVA11996,感兴趣的孩子可以去写写
这题的主要思路是利用splay维护序列,对于reverse和modify操作都可以直接利用splay来维护,主要的问题是lcp的求法,lcp比较直接的做法是二分长度,然后利用splay维护hash值。利用数据结构来维护hash值,这个在多校里面见过好多次了,最近的一场是FZU的B题?维护的是前缀hash值,和后缀hash值(为了翻转操作),判断区间的hash值是否相同即可,保险一点可以用双hash。
Manacher对于最长回文的求法,可以使用O(N)的Manacher算法
相对于那些大代码量的题,这题算是较短代码了,主要处理好splay的部分,对于求回文,直接把splay进行dfs下放,然后得到字符串,然后执行O(N)的回文即可。
这题需要注意的地方如下:
dfs的时候要下放,否则会有问题
l和r需要交换,如果l>r的话
代码量在280左右,splay的标准线