摘要:这题比赛20分钟时候看的,最后一分钟A的。。。原因就是逆着找的时候要是尽可能后面的,比如abab 倒过来是baba 应该是后面这个b,此时这个对应原串的位置更小所以用Next数组搞一下。代码如下: 1 #include 2 using namespace std; 3 const int maxn ...
阅读全文
摘要:无力吐槽。。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int N = 50010; 8 const int kind = 256; 9 ch...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2896题意:给定n个小于200的串,字符范围是0~127,再给定m个10000以内串,求n在m中出现的情况,中文题。题解:这题有几个点非常坑,第一,字符范围不用0~127,第二:输入:4aaaaaaaaa...
阅读全文
摘要:刚学习一发AC自动机。记录一下模版。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 1000000+50; 6 struct node{ 7 int Next[26];//...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068题意:求最长回文串的长度。题解:纯模版。代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const ...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3294题意:给定一个字符和一个字符串,求转化后字符串出现的第一个最长回文(即有很多相同长度,输出第一个),并输出起始终点位置,以及转化后的回文串。题解:manacher算法求得最长回文串的长度mxx以及该...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4513题意:给定n给整数,求最长回文串,并且前缀非递减,后缀非递增。题解:套manacher模版。时间:280Ms代码如下: 1 #include 2 #include 3 #include 4 #inc...
阅读全文
摘要:题目链接:http://poj.org/problem?id=3974题意:给定一个字符串,求最长回文。题解:manacher算法模版题。代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const ...
阅读全文
摘要:manacher:可以解决最长回文问题。算法:1.首先,将字符串的每个字符左右加入#,并在s0位置加入*(如果字符串中本身含有这些,则换成未出现过的字符),此时字符串的长度为len+len+3,即加入了len+1个#和一个*; (比如:aba变成 *#a#b#a#) 2.得到一个p数组,该数组...
阅读全文
摘要:题目链接:题意:给出26个数字,代表a-z字母对应的价值,再给出一个字符串,求其切成两半总价值最大为多少,如果不是回文则价值为0.题解:利用manacher算法,求的前缀为回文或后缀为回文的每一个位置,如果一个点之前的前缀为回文,则会有p[i]-i==0 (此时p[i]-1为前缀的长度,p[i]-1...
阅读全文
摘要:题目链接:http://poj.org/problem?id=3746题意:不想多说。。。题解:看代码。时间:0Ms内存:1892KB注:打表部分转自他人。。。。代码: 1 #include 2 #include 3 #include 4 #include 5 using namespac...
阅读全文
摘要:题目链接:http://acm.fzu.edu.cn/problem.php?pid=1901题意:求某个前缀,可以使得前缀和剩下部分能够一一对应,可以是原串。题解:Next数组的应用,首先 t=Next[len] 的意义是(假设1-t意思是前面t个字符):s[1....t]=s[len-t,len...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609题意:给你n个等长含有 0 1 的字符串,字符串为环形,问一共有多少种串。题解:这题的方法是最小表示法+... 就是用最小表示法处理后,可以用很多方法解决,比如字典树、二叉树等等。楼主用的是hash...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374题意:给出字符串,求最小表示法和最大表示法,并输出有几次出现,其实就是最小循环节的个数题解:最小表示法求解,KMP求解最小循环节 最小循环节 = len - Next[len] 个数必须整出,如不整...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2328题意:输入一个不为0的整数n,再输入n个字符串,求n个字符串的最长公共连续子序列,并保证字典序最小。题解:直接暴力枚举。Times:764msMemory:1892KB代码如下: 1 #inclu...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1238题意:给定n个字符串,求它们的最长连续子序列,值得注意的是,求的的子序列可以是反转的。题解:直接记录出最短的字符串作为匹配串,其实用第一个也应该是可以的,然后不断的缩小其长度,知道能够匹配成功,如果...
阅读全文
摘要:Trie 树 中文名叫字典树,可以用来存放n个单词,并且找出某个前缀的数量,或者找出某个单词的数量。其实也有其他的应用,比如统计有多少个不同的字符串等等。字典树分为一般分为两个部分,一个是创建字典树,还一个是find函数,find函数的写法随着题目要求可以灵活多变的!首先 要先定义出数据结构。1 ...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300题意:说实话,看半天题目,愣是没看懂,百度题意才看懂,大概意思就是:第一个串串为匹配串,第i个代表字母顺序中的第i个,比如第一个是q,那么,q就代表a。第二个串是密文+明文,密文全部都有,但明文可能...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336题意:求给定字符串的前缀出现次数的总和。题解:先求得next数组,从i=1开始遍历next数组,只要其值不为0,则让计数器加1,原因:next数组每出现不为0的时候,则代表有个一个前缀重复。 ...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594题意:给两个字符串,求前面哪个字符串的前缀和后面字符串的后缀相同的最大串。题解:将两个字符串合成一个字符串,利用KMP里的next数组。next[len]即为所求。但要注意,长度必须小于两者小的那个...
阅读全文