ZOJ3533-Gao the String I

好吧,这场比赛被完虐,3+3来的太不容易了,这题在之前见过类似的问题,不过那题至今没过,还是处于TLE的状态- -

题号是UVA11996,感兴趣的孩子可以去写写

这题的主要思路是利用splay维护序列,对于reverse和modify操作都可以直接利用splay来维护,主要的问题是lcp的求法,lcp比较直接的做法是二分长度,然后利用splay维护hash值。利用数据结构来维护hash值,这个在多校里面见过好多次了,最近的一场是FZU的B题?维护的是前缀hash值,和后缀hash值(为了翻转操作),判断区间的hash值是否相同即可,保险一点可以用双hash。

Manacher对于最长回文的求法,可以使用O(N)的Manacher算法

地址如下:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/

相对于那些大代码量的题,这题算是较短代码了,主要处理好splay的部分,对于求回文,直接把splay进行dfs下放,然后得到字符串,然后执行O(N)的回文即可。

这题需要注意的地方如下:

dfs的时候要下放,否则会有问题

l和r需要交换,如果l>r的话

代码量在280左右,splay的标准线微笑


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值