博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO 17DEC Standing Out from the Herd P 题解
阅读量:2304 次
发布时间:2019-05-09

本文共 1505 字,大约阅读时间需要 5 分钟。

题目大意: 给出 N N N 个字符串,求出每个字符串拥有多少个本质不同的且不被其他字符串包含的子串。

题解

广义后缀自动机裸题,造的时候标记一下包含前缀的状态属于哪个字符串,造出来之后把后缀链接树也造出来,假如一个状态的子树内的所有状态都属于同一个字符串,那么这个状态就只属于哪个字符串,加上他的贡献即可,假如子树内不是都属于同一个字符串,说明这个状态包含的子串在不同的字符串中出现过,就不可能提供贡献了。

代码如下:

#include 
#include
#include
using namespace std;#define maxn 200010#define ll long longint T,n,ans[maxn];char s[maxn];struct state{
int len,link,next[26],belong;}st[maxn];int id=0,last,now,p,q;void extend(int x,int be){
now=++id; st[now].len=st[last].len+1;st[now].belong=be; for(p=last;p!=-1&&!st[p].next[x];p=st[p].link)st[p].next[x]=now; if(p!=-1) {
q=st[p].next[x]; if(st[p].len+1==st[q].len)st[now].link=q; else {
int clone=++id; st[clone]=st[q];st[clone].len=st[p].len+1; for(;p!=-1&&st[p].next[x]==q;p=st[p].link)st[p].next[x]=clone; st[q].link=st[now].link=clone; } } last=now;}struct edge{
int y,next;};edge e[maxn];int first[maxn],len=0;void buildroad(int x,int y){
e[++len]=(edge){
y,first[x]};first[x]=len;}void dfs(int x){
for(int i=first[x];i;i=e[i].next) {
dfs(e[i].y); if(!st[x].belong)st[x].belong=st[e[i].y].belong; else if(st[x].belong!=st[e[i].y].belong)st[x].belong=-1; } if(st[x].belong!=-1)ans[st[x].belong]+=st[x].len-st[st[x].link].len;}int main(){
scanf("%d",&T); st[0].link=-1; for(int j=1;j<=T;j++) {
scanf("%s",s+1);n=strlen(s+1);last=0; for(int i=1;i<=n;i++)extend(s[i]-'a',j); } for(int i=1;i<=id;i++)buildroad(st[i].link,i); dfs(0); for(int i=1;i<=T;i++)printf("%d\n",ans[i]);}

转载地址:http://qjnib.baihongyu.com/

你可能感兴趣的文章
yiluo----- Maven基础-默认中央仓库[settings.xml 配置详解 ]
查看>>
yiluo-----Eclipse 插件Maven在使用 add dependency,找不到包,解决办法
查看>>
yiluo-----web.xml语句顺序问题
查看>>
Axis2 Web Service安全之rampart 【加密解密的基本概念以及实例代码】
查看>>
360doc-----CXF方式发布WebService全步骤 [未试验]
查看>>
360doc-----简单CXF方式的webService客户端调用范例
查看>>
Cxf+wss4j的WS-Security实现【未验证】
查看>>
tomcat开启SSL8443端口的方法 【文章内容仅供参考】
查看>>
Tomcat配置https协议、以及http协议自动REDIRECT到HTTPS【没有试验,内含设置强制https访问】
查看>>
CA根证书制作【仅供参考】-----win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
查看>>
快速排序 迭代实现
查看>>
二叉树的遍历
查看>>
经典SQL语句大全【仅供参考】
查看>>
HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等【重要理解】
查看>>
Apache Mahout中的机器学习算法集【小结】
查看>>
ICE框架【源于.NET、CORBA及WEB SERVICE这些中间件的不足】-----ICE简单介绍及使用示例
查看>>
Java实现文件的RSA和DES加密算法
查看>>
在eclipse中使用Lombok
查看>>
Intellij IDEA运行报 Command line is too long 解法
查看>>
线性代数中矩阵特征值和特征向量的几何意义
查看>>