随笔分类 - 串
摘要:1、给一个串,在给一个单词集合,求用这个单词集合组成串,共有多少种组法。例如:串 abcd, 单词集合 a, b, cd, ab组合方式:2种:a,b,cdab,cd2、把单词集合建立字典树,然后从后向前dp,dp[i]=dp[i]+dp[i+len(x)]; 其中x为当前找到的前缀长度。3、#in...
阅读全文
摘要:1、给一个数字字符串s,可以把它的最后一个字符放到最前面变为另一个数字,直到又变为原来的s。求这个过程中比原来的数字小的、相等的、大的数字各有多少。例如:字符串123,变换过程:123 -> 312 -> 231 -> 123因为:312>123, 231>123, 123=123所以答案是:0 1...
阅读全文
摘要:1、输入若干行树名,输入结束后,按字典序输出树名及其所占百分比。2、多种方法:map,trie,BST3、map:#include#include#include#includeusing namespace std;int main(){ maph; string s; int ...
阅读全文
摘要:1、给n个只含0、1的串,求出这些串中前缀的最大和。例1:0000000110101010结果:6(第1、2串共有000,3+3=6)例2:0101001010101010101011010010101010101010结果:20(第1串的长度为20)2、用trie树(字典树)来做,插入的时候统计前...
阅读全文
摘要:1、找出一个最长的回文子串,要求中间的值最大,然后向两侧递减。2、判断条件改为:Ma[i+Mp[i]]==Ma[i-Mp[i]]&&Ma[i-Mp[i]]#include#includeusing namespace std;//求最长回文子串const int MAXN=100005;int Ma...
阅读全文
摘要:1、赤裸裸的最小循环节2、3、#include#include#includeusing namespace std;#define MAXN 1000005//字符串长度int _next[MAXN];void GetNext(char t[]){//求next数组 int j,k,len;...
阅读全文
摘要:题意:求目标串中出现了几个模式串思路:ac自动机#include#include#include#includeusing namespace std;struct Trie{ int next[500010][26],fail[500010],end[500010]; int root...
阅读全文
摘要:题意:在一个串中找 EAEBE 的形式的最长的E,其中E为一个字符串,也就是说找到前缀与后缀相同,并且串中还存在相同的一段,它们不能重复。思路:利用next数组,next[len]代表的即是最大的相同的前缀与后缀,然后让 i 从len-1往前遍历找到 i>=2(前面部分最少要有2个字符),在过程中更...
阅读全文
摘要:题意:求最小的循环矩形思路:分别求出行、列的最小循环节,乘积即可。#include#include#includeusing namespace std;int next[10005];int r,c;char str[10005][80];bool equalR(int i,int j){//行相...
阅读全文
摘要:题意:两个字符串s、t,求s和t的最长的相同的前缀和后缀思路:先求s的next数组,再求t的next数组(即代码中ex数组,此时不是自己与自己匹配,而是与s匹配),最后看ex[len2]即可(len2为串t的长度)。#include#include#includeusing namespace st...
阅读全文
摘要:题意:给出一串字符串,可以在字符串的开头的结尾添加字符,求添加最少的字符,使这个字符串是循环的(例如:abcab 在结尾添加1个c变为 abcabc 既可)。思路:求出最小循环节,看总长能不能整除。#include#include#includeusing namespace std;#define...
阅读全文
摘要:题意:统计前缀在串中出现的次数思路:next数组,递推#include#include#includeusing namespace std;#define MaxSize 200005#define Mod 10007char str[MaxSize];int _next[MaxSize];int...
阅读全文
摘要:题意:真难懂。。给出26个英文字母的加密表,明文中的'a'会转为加密表中的第一个字母,'b'转为第二个,...依次类推。然后第二行是一个字符串(str1),形式是密文+明文,其中密文一定完整,而明文可能不完整(也可能没有)。求出最短的完整的字符串(密文+明文)。思路:1.用kmp来做:首先肯定的是,...
阅读全文
摘要:题意:重复子串次数思路:kmp#include#include#includeusing namespace std;#define MaxSize 1000005int next[MaxSize];void GetNext(char t[]){//求next数组 int j,k,len; ...
阅读全文
摘要:题意:统计子串出现在主串中的次数思路:典型kmp#include#include#includeusing namespace std;int next[10005];void GetNext(char t[]){//求next数组 int j,k,len; j=0; k=-1; ...
阅读全文
摘要:题意:裸kmp思路:kmp模板#include#include#includeusing namespace std;#define MaxSize 10005int s[1000005],t[10005];int next2[MaxSize];void GetNext(int t[],int le...
阅读全文
摘要:题意:统计单串中从某个位置以前有多少重复的串思路:kmp模板#include#include#includeusing namespace std;#define MaxSize 1000005char str[MaxSize];int next2[MaxSize];void GetNext(cha...
阅读全文
浙公网安备 33010602011771号