博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【后缀自动机】【拓扑排序】【动态规划】hihocoder1457 后缀自动机四·重复旋律7...
阅读量:6706 次
发布时间:2019-06-25

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

 

#include
#include
#include
using namespace std;typedef long long ll;#define MOD 1000000007ll#define MAXL 2000000#define MAXC 11char s[MAXL+10];int len/*文本串长度*/;struct SAM{ int n/*状态数0~n-1*/,maxlen[2*MAXL+10],minlen[2*MAXL+10],trans[2*MAXL+10][MAXC],slink[2*MAXL+10]; int new_state(int _maxlen,int _minlen,int _trans[],int _slink){ maxlen[n]=_maxlen; minlen[n]=_minlen; for(int i=0;i
S)上都没有对应字符ch的转移 minlen[z]=1; slink[z]=0; return z; } int x=trans[v][c]; if(maxlen[v]+1==maxlen[x]){//较简单的情况,不用拆分x minlen[z]=maxlen[x]+1; slink[z]=x; return z; } int y=new_state(maxlen[v]+1,-1,trans[x],slink[x]);//最复杂的情况,拆分x slink[y]=slink[x]; minlen[x]=maxlen[y]+1; slink[x]=y; minlen[z]=maxlen[y]+1; slink[z]=y; int w=v; while(w!=-1 && trans[w][c]==x){ trans[w][c]=y; w=slink[w]; } minlen[y]=maxlen[slink[y]]+1; return z; }}sam;int m;queue
q;int ru[MAXL*2+10];ll paths[MAXL*2+10],f[MAXL*2+10],ans;int main(){// freopen("hihocoder1457.in","r",stdin); scanf("%d",&m); for(int i=1;i<=m;++i){ scanf("%s",s+len); len=strlen(s); s[len]=':'; s[++len]='\0'; } int U=sam.add_char(0,-1); for(int i=0;i

转载于:https://www.cnblogs.com/autsky-jadek/p/6637708.html

你可能感兴趣的文章
SQLPlus环境设置
查看>>
如何解决crontab脚本执行sudo
查看>>
大数据应用之HBase数据插入性能优化之多线程并行插入测试案例
查看>>
phalcon的nginx重写实现模仿apache下的.htaccess
查看>>
使用用户自定义的辅助实例执行基于表空间的时间点恢复
查看>>
Mybatis XML 映射配置文件
查看>>
MySQL深入03-锁-事务-GTID
查看>>
HTML学习日记(1-基础)
查看>>
如何查看mysql的用户及授权
查看>>
JAVA jacob office转换pdf代码
查看>>
Java 命令行运行参数大全
查看>>
Oracle学习之路-SQL篇-连接查询
查看>>
我的友情链接
查看>>
Windows 7打开.hlp文件
查看>>
Hadoop 完全分布式搭建指南
查看>>
从比特币的疯狂引发出的区块链热潮
查看>>
mongoDB
查看>>
为什么SD-WAN现在正在起飞
查看>>
大数据需要学什么,如何从零开始规划大数据学习之路!
查看>>
服务器双ip部署分布式系统解决办法之一
查看>>