CF1200E Compress Words KMP or Hash

CF1200E Compress Words KMP or Hash_第1张图片

 

这个题就是求字符串拼接后的字符串,中间重复的不要

https://codeforces.com/problemset/problem/1200/E

Hash或者KMP解决
就是匹配新出现的串与原来串的(长度与新出现串相等的)后缀的匹配
KMP做法

#include 
 
using namespace std;
const int maxn=1e6+12;
char s[maxn];
char t[maxn];
int fail[maxn];
int main ()
{
    int n;
    int e=0;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",s);
        int len=strlen(s);
        int j=0,k=-1;
        fail[0]=-1;
        while(j

HASH

#include
 
using namespace std;
typedef long long ll;
const int maxn=1e6+10;
char s[maxn];
char tp[maxn];
int mod=1e9+7;
int mod1=1313131;
int mod2=998244353;
int mu=1;
ll ha1[maxn];
ll ha2[maxn];
ll g1[maxn];
ll g2[maxn];
void init()
{
    g1[0]=1;
    g1[0]=1;
    for(int i=1;i>n;
    while(n--)
    {
        scanf("%s",tp+1);
        int pos=1;
        int len=strlen(tp+1);
        int mi=min(len,mu-1);
        ll h1=0,h2=0;
        for(int i=0;i

 

你可能感兴趣的:(KMP,哈希)