随笔分类 -  ACM_字符串

摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4513 当时比赛没有A掉的题目,在Manacher匹配的时候维护有序就可以了。 1 //STATUS:C++_AC_156MS_2212KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm& 阅读全文
posted @ 2013-04-10 14:39 zhsl 阅读(563) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 直接用Manacher算法解决即可,先构造字符串,例如 abc -> $#a#b#c# ,第一个‘$’是为了防止溢出字符串。其实也可以不构造字符串,直接去Manacher,具体做法是,当 i 为奇数时为‘#’,为偶数时再去比较。 1 //STATUS:C++_AC_281MS_1348KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math. 阅读全文
posted @ 2013-04-10 14:37 zhsl 阅读(378) 评论(0) 推荐(0)
摘要:转送门:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824 这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/ 其实原文说得是比较清楚的,只是英文的,我这里写一份中文的吧。 首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个... 阅读全文
posted @ 2013-04-10 14:31 zhsl 阅读(219) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1226 买一送一的题目,稍微修改POJ3450或POJ3080的代码就可以了。不过C++和G++不支持strrev()函数,因为strrev()不是ANSI C的语法,改为_strrev()就可以了。 1 //STATUS:C++_AC_0MS_172KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #incl 阅读全文
posted @ 2012-12-29 11:14 zhsl 阅读(201) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3450 和POJ3080一个意思,都是要你求在n个字符串中,相同字串最长的一个。方法也是KMP+枚举,不过这题的数据大一点。 1 //STATUS:C++_AC_516MS_380KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algo 阅读全文
posted @ 2012-12-28 20:28 zhsl 阅读(236) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3080 每个字符串的长度为60,而且字符串的数量很少,容易想到枚举水过。这题目的数据,就算纯暴力不优化,貌似也能过。加个KMP匹配也看不出多少优势。。。我在写KMP的时候,犯了一个低级的错误,居然把匹配过程写错了,导致wa了很久,下次吸取教训!!! 1 //STATUS:C++_AC_0MS_164KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include 阅读全文
posted @ 2012-12-28 20:24 zhsl 阅读(233) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1035 方法很多,hash标记判重也可以,然后就是分情况判断就可以了。。 1 //STATUS:C++_AC_360MS_1132KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include<string> 8 #include<algorithm> 9 #include<v 阅读全文
posted @ 2012-12-28 20:18 zhsl 阅读(291) 评论(0) 推荐(0)