博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 4460 [Jsoi2013]广告计划 ——Bitset 后缀自动机
阅读量:5876 次
发布时间:2019-06-19

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

发现n比较小,直接枚举答案,然后发现连续的一段是确定的,然后我们只需要判断每个位置是否有这个连续的一段就好了

发现起点不同,最后的位置可能会有差距,所以DP一下就好了

然后用0表示未折返,1表示从最下面换到最上面,然后就是发现所有位置互不干扰,直接用Bitset压一下就可以做了

复杂度N^3/64

#include 
using namespace std; #define maxn 100005int fa[maxn],go[maxn][26],last,cnt,l[maxn],v[maxn],q[maxn];char s[maxn];bitset <205> bit[maxn],Nothing,dp[2][2]; void init(){ last=cnt=1;} void add(int x,int pos){ int p=last,q; if ((q=go[p][x])){ if (l[q]==l[p]+1) last=q; else{ int nq=++cnt; l[nq]=l[p]+1; memcpy(go[nq],go[q],sizeof go[q]); fa[nq]=fa[q]; fa[q]=nq; for (;p&&go[p][x]==q;p=fa[p]) go[p][x]=nq; last=nq; } } else{ int np=++cnt; l[np]=l[p]+1; for (;p&&!go[p][x];p=fa[p]) go[p][x]=np; if (!p) fa[np]=1; else{ q=go[p][x]; if (l[q]==l[p]+1) fa[np]=q; else { int nq=++cnt; l[nq]=l[p]+1; memcpy(go[nq],go[q],sizeof go[q]); fa[nq]=fa[q]; fa[q]=fa[np]=nq; for (;p&&go[p][x]==q;p=fa[p]) go[p][x]=nq; } } last=np; } bit[last][pos]=1;} void insert(){ last=1; scanf("%s",s+1); int Len=strlen(s+1); for (int i=1;i<=Len;++i){ add(s[i]-'a',i); }} void Radix(){ for (int i=1;i<=cnt;++i) v[l[i]]++; for (int i=1;i<=cnt;++i) v[i]+=v[i-1]; for (int i=cnt;i>=1;--i) q[v[l[i]]--]=i; for (int i=cnt;i>=1;--i) bit[fa[q[i]]]|=bit[q[i]];} int n,m,Len;char t[maxn]; bool test(int x){ int now=1,pre=0; dp[now][0].reset(); dp[now][1].reset(); dp[now][0].set(); int all=(Len+x-1)/x; for (int i=1;i<=x;++i){ int pos=1,flag=1,tmp=0; now^=1; pre^=1; for (int j=i;j<=Len;j+=x){ pos=go[pos][t[j]-'a']; tmp++; if (!pos) {flag=0;break;} } if (flag){ bitset<205> Match=bit[pos]; if (tmp
Test; Radix(); Nothing.reset(); scanf("%s",t+1); Len=strlen(t+1); for (int i=1;i<=Len;++i){ if (test(i)) { printf("%d\n",i); return 0; } } printf("No Sulotion\n");}

  

转载于:https://www.cnblogs.com/SfailSth/p/7133840.html

你可能感兴趣的文章
rpm 相关问题
查看>>
PE结构讲解--section table 和 section
查看>>
主DNS服务-反向解析
查看>>
车联网上云最佳实践(七)
查看>>
70种方法,轻松入门Python可视化编程
查看>>
AIF娱乐完成数千万人民币Pre-A轮融资 计划年底推出第一支男子偶像团体
查看>>
Java 程序员必会的技术
查看>>
[Flink]Flink1.3 Batch指南一 本地运行
查看>>
1小时轻松上手springmvc,视频网站后台开发
查看>>
.NET Core 使用RabbitMQ
查看>>
zookeeper小入门(一)
查看>>
美摄科技获数千万元Pre-A 轮融资,深创投投资
查看>>
laravel为啥这么的慢?
查看>>
SSM-Spring-11:Spring中使用代理工厂Bean实现aop的四种增强
查看>>
日志服务(Log service)6月控制台更新指南
查看>>
DeepMind论文解读:让机器更深入地理解文本
查看>>
【下一代核心技术DevOps】:(四)私有镜像库阿里云Docker服务使用
查看>>
SAP成都研究院非典型程序猿,菜园子小哥:当我用UI5诊断工具时我用些什么
查看>>
Android SmartTabLayout worm蠕虫蠕动/普通平整动画切换动画属性
查看>>
恶意网站可利用浏览器扩展 API,窃取浏览器数据
查看>>