poj2752】的更多相关文章

2752这是一道关于next函数的题(其实好像也可以用后缀数组暴力搞搞,但大概会超时)根据next[i]=max{j} (s[0..j]=s[i-j..i] j<i)不难发现这正是某个串既是前缀又是后缀的形式所以我们先求一遍kmp,然后就是找出所有这样的串首先最长的肯定是原串,,次长的肯定是s[0..next[n]]那下一个呢?答案是只要一直从n按着next迭代下去就能找到可行解.我们不妨设next[i]=j next[j]=k,当i是可行解,那j一定也是因为s[0..j]=s[i-j..i]可…
Seek the Name, Seek the Fame poj-2752 题目大意:给出一个字符串p,求所有既是p的前缀又是p的后缀的所有字符串长度,由小到大输出. 注释:$1\le strlen(p)\le 4\cdot 10^5$. 想法:显然,这样的所有的字符串必须满足一些性质.我们预处理出所有p的next数组.然后对于next[len],如果它的next与末尾字符相同,显然这也是一个满足条件的子串,就这样,我们一直跳next,知道==-1停止. 最后,附上丑陋的代码... ... #i…
题目链接:https://vjudge.net/problem/POJ-2752 Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 21220   Accepted: 11065 Description The little cat is so famous, that many couples tramp over hill and dale to Byteland…
题目链接:https://cn.vjudge.net/problem/POJ-2752 题意 给一个字符串,求前缀串跟后缀串相同的前缀串的个数 例:alala 输出:a, ala, alala 思路 仔细想想,fail[len]的返回值其实就是匹配成功的最大后缀串 得到这个后缀串后,比这个串更小的串一定还是被包含在这个新的后缀串中 迭代即可 提交过程 AC 代码 #include <cstring> #include <cstdio> const int maxm=4e5+20;…
poj2752找所有的前缀等于后缀,那就是找所有前缀等于后缀的前缀,递归再用栈存一下 #include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include<ctime> #include<set> #include<map> #include<stack> #include&l…
Seek the Name, Seek the Fame POJ-2752 本题使用的算法还是KMP 最主要的片段就是前缀数组pi的理解,这里要求解的纸盒pi[n-1]有关,但是还是需要使用一个循环来依次找到前面符合的前缀(所谓符合就是可以保持既是前缀也是s的后缀的子串长度). #include<iostream> #include<cstdio> #include<string> #include<algorithm> #include<set>…
需要理解next[]的意义.之前看到大牛的博客,next[]讲的非常清楚. 利用next[],当前位子的前面那一段和next[当前位子]的前面那一段是相同的.又next[next[当前位子]]与next[当前位子]有一段相同,所以当前位子的前面一段和 next[next[当前位子]]的前一段有相同即可. #include<stdio.h> #include<string.h> #include<stack> using namespace std; #define ma…
Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11831   Accepted: 5796 Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names t…
题意:    给出一个字符串str,求出str中存在多少子串,使得这些子串既是str的前缀,又是str的后缀.从小到大依次输出这些子串的长度. 这个就是next数组的应用,next数组真是很深奥啊. 根据最后一个next数组的值,递归去找前面的值,直到是0时停止.证明见链接. 链接:http://www.cnblogs.com/dongsheng/archive/2012/08/13/2636261.html #include <map> #include <set> #inclu…
KMP继续练手.题目问的是一个串前缀等于后缀的可能长度是哪些,输出来.题目考的是对KMP失配指针的理解,当最后一位失配(即'\0'那里)时,指针会移动到前缀对应匹配的部分,所以这个长度是我们要的,然后接着这个新的前缀的失配指针移到的部分,与这个前缀的后缀也是匹配的..这样一直滚下去就可以了得到所有可能的值. 贴一记代码. #include<iostream> #include<cstring> #include<string> #include<cstdio>…