摘要: 后缀数组 好感动,复习了下后缀数组居然写出来了……(感谢ykz大神) 求最长公共子串……WA了一发是因为:【不同字符串之间要用不同的特殊字符隔开】否则就会匹配到相同→_→比如都是aaa结尾,如果用相同特殊字符就会使得最长公共子串变成aaa#这样子…… 1 /******************... 阅读全文
posted @ 2015-04-07 20:43 Tunix 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 后缀数组 o(︶︿︶)o 唉傻逼了一下,忘了把后缀数组的字典范围改回20001,直接21交了上去,白白RE了两发……sigh 既然要找出现了K次的子串嘛,那当然要用后缀数组了>_>(因为我太弱不会自动机&树) ok离散化后上后缀数组,求出height数组>_>然后用个……ST表= =?! O... 阅读全文
posted @ 2015-04-07 19:42 Tunix 阅读(186) 评论(0) 推荐(0) 编辑
摘要: Manacher算法 啊……Manacher修改一下就好啦~蛮水的…… Manacher原本是找首尾相同的子串,即回文串,我们这里是要找对应位置不同的“反回文串”(反对称?233) 长度为奇数的肯定不满足>_>(中间那个字符无论如何不反对称) 那么我们就找'#'为中心的即可…… 将判断条件... 阅读全文
posted @ 2015-04-07 17:15 Tunix 阅读(179) 评论(0) 推荐(0) 编辑
摘要: Manacher算法/DP 找出所有的回文串,看做是一个个线段,那么问题就转化成了用最少的线段将整个区间覆盖起来,可以重叠,那么这就是一个DP了= = Orz ZKY大爷,让蒟蒻开眼界了……头一次知道原来树状数组还可以反过来用0.0 1 /****************************... 阅读全文
posted @ 2015-04-07 16:30 Tunix 阅读(226) 评论(0) 推荐(0) 编辑
摘要: Manacher算法 找出一个最长子串S=X+Y,且X和Y都是回文串,求最长的长度是多少…… 同时找两个串明显很难搞啊……但是我们可以先找到所有的回文串!在找回文串的同时我们可以预处理出来l[i]和r[i]分别表示从 i 这个位置开始向左/右最长的回文串有多长,那么我们枚举两个回文串的分割点更新... 阅读全文
posted @ 2015-04-07 11:32 Tunix 阅读(233) 评论(0) 推荐(0) 编辑
摘要: Manacher算法 Manacher模板题…… 1 //HDOJ 3068 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define rep(i,n) for(int i=0;i=n;--i)10 using namespa... 阅读全文
posted @ 2015-04-07 10:42 Tunix 阅读(168) 评论(0) 推荐(0) 编辑