求助
  • 板块灌水区
  • 楼主_FJqwq
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/12/6 21:47
  • 上次更新2023/10/27 00:15:32
查看原帖
求助
755947
_FJqwq楼主2022/12/6 21:47

题目 | RE 记录

#include<bits/stdc++.h>
//#include<type_traits>
//#include<debug/debug.h>
//#include<bits/stl_pair.h>
//#pragma GCC optimize(1)
//#pragma GCC optimize(2)
//#ifndef _STL_ALGOBASE_H
//#if __cplusplus > 201703L
//#define _STL_ALGOBASE_H 1
//#if __cplusplus >= 201103L
//#include<bits/c++config.h>
//#include<ext/type_traits.h>
//#include<bits/functexcept.h>
//#include<bits/stl_iterator.h>
//#include<ext/numeric_traits.h>
//#include<bits/concept_check.h>
//#include<bits/predefined_ops.h>
//#include<bits/cpp_type_traits.h>
//#include<bits/move.h> // For std::swap
//#include<bits/stl_iterator_base_types.h>
//#include<bits/stl_iterator_base_funcs.h>
using namespace std;
//#define int long long
//#define ll long long int
#define ull unsigned long long
typedef long long ll;
//#define I using
//#define AK namespace
//#define IOI std
//I AK IOI;


int n,tot1,t1[10000005],que[10000005],qr,nxt[10000005];
char s[10000005],ch[10000005][50];
void build()
{
	int u=1,len=strlen(s+1);
	for(int i=1,v;i<=len;i++)
	{
		v=s[i]-'a';
		if(!ch[u][v])
		{
			ch[u][v]=++tot1;
			memset(ch[tot1],0,sizeof ch[tot1]);
		}
		u=ch[u][v];
	}
	t1[u]++;
	return ;
}
void dfs1()
{
	for(int i=0;i<26;i++)
		ch[0][i]=1;
	que[qr=1]=1,nxt[1]=0;
	for(int i=1,u,v;i<=qr;i++)
	{
		u=que[i];
		for(int j=0;j<26;j++)
			if(!ch[u][j])
				ch[u][j]=ch[nxt[u]][j];
			else
			{
				que[++qr]=ch[u][j];
				v=nxt[u];
				nxt[ch[u][j]]=ch[v][j];
			}
	}
}
int find()
{
	int u=1,len=strlen(s+1),res=0;
	for(int i=1,v,p;i<=len;i++)
	{
		v=s[i]-'a';
		p=ch[u][v];
		while(p>1)
		{
			res+=t1[p];
			t1[p]=0;
			p=nxt[p];
		}
		u=ch[u][v];
	}
	return res;
}
int main()
{
	tot1=1;
	memset(t1,0,sizeof t1);
	for(int i=0;i<26;i++)
		ch[0][i]=1,ch[1][i]=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%s",s+1),build();
	dfs1();
	scanf("%s",s+1);
	return printf("%d\n",find()),0;
}

为什么会 RE 啊?空间也开大了呀???

2022/12/6 21:47
加载中...