合集-字符串合集
摘要:1、字符串哈希 其实就是把每个字符转换成ASCLL码,然后就把这个字符串当成一个某(base)进制的数字,再转换成十进制。 每个数字要乘它的权重(第一个的权重是很多次幂,是通过前缀加循环的方式实现的,而不是直接乘一个高次幂) 1、字符串的哈希值核心板子: typedef unsigned long
阅读全文
摘要:直接上板子 直接输出最长回文子序列的长度 #include<bits/stdc++.h> using namespace std; const int maxl=1100005; int p[32000005]; //p[i]-1表示以i为中点的回文串长度,这个数组要大 string a; //用于
阅读全文
摘要:因为马拉车不能求回文子序列个数,所以只能采用这个DP 此DP是不要求连续的回文子串 你要连续的回文子串个数,可以用回文自动机 #include <iostream> using namespace std; int dp[200][200]; string str; int solve(){ int
阅读全文
摘要:KMP算法 一个人能能走的多远不在于他在顺境时能走的多快,而在于他在逆境时多久能找到曾经的自己。 ————KMP 板子介绍 两个部分分别实现了next数组的构造 和匹配的过程。 本文均是从下标1开始的。(写题的时候就这么做即可,中间过程无虚任何改动) 最后打印的时候(看样例加和减即可) #incl
阅读全文
摘要:主要用途 1、主串递减,和模式串比较 从s的i位置开始,i后面的串,和t进行匹配,看最多能匹配多少位(公共前缀)。即为exnext数组 2、模式串和模式串自己的后缀们匹配 t自己,和它的所有后缀们进行匹配,看最大能匹配几个公共前缀,即为next数组(此next数组,对exnext数组有用) #inc
阅读全文
摘要:字典树所有功能 1、查整体单词(查前缀) 2、字符串排序(结合词频,可输出重复字符串) (放外头可以实现输出前缀) 3、统计词频(前缀频) 字符串词频(cnt数组就是频,放里头是整体词频,放外头就是前缀词频) 1、查整体单词(查前缀) //放外面就是查整体 //放里头就是查前缀 #include<b
阅读全文
摘要:实在是看不懂了.... 下面这个代码是求最大异或对,的值 至于那个异或区间....实在看不懂了...还是贴一下吧 #include<iostream> #include<algorithm> using namespace std; int const N=100010,M=31*N; int n;
阅读全文
摘要:二次加强版那个题 距离最大内存,就差了一个ss数组了....96分 #include<bits/stdc++.h> #define maxn 2000001 using namespace std; string ss[100000]; char s[maxn],T[maxn]; int n,cnt
阅读全文
摘要:求以每个节点结尾的,回文子串的个数,最大回文子串的长度 求回文串的总个数(必须连续) 不连续的是动态规划 #include<bits/stdc++.h> using namespace std; const int maxn = 500005; char str[maxn]; struct PAM
阅读全文
摘要:#include <iostream> #include <cstring> using namespace std; const int N = 2000010; int n; char a[N], b[N]; int get_min(char s[]) { int i = 0, j = 1; w
阅读全文
摘要:作用 把一个大字符串分成好多个小字符串 这些小字符串的最小后缀,就是其本身 求出这些小字符串的右端点下标 #include<bits/stdc++.h> using namespace std; char s[5000005]; int n,ans; vector<int> a; int main(
阅读全文
摘要:存储子串的出现次数 怎么把这个子串打印出来呢? #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm> #include<iostream> using namespace std
阅读全文

浙公网安备 33010602011771号