博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2806 [Ctsc2012]Cheat
阅读量:6585 次
发布时间:2019-06-24

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

我们的目的就是找到一个最大的L0,使得该串的90%可以被分成若干长度>L0的字典串中的子串。

明显可以二分答案,对于二分的每个mid

我们考虑dp:f[i]表示前i个字符,最多能匹配上多少个字符。

发现转移端点是个不断前进的区间,单调队列优化就可以了。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #define N 2222222 7 #define eps 1e-8 8 using namespace std; 9 int last,tot,ch[N][2],par[N],mx[N];10 void add(int c){11 int p=last,np=++tot;mx[np]=mx[p]+1;12 for(;p&&!ch[p][c];p=par[p])ch[p][c]=np;13 if(!p)par[np]=1;14 else{15 int q=ch[p][c];16 if(mx[q]==mx[p]+1)par[np]=q;17 else{18 int nq=++tot;19 mx[nq]=mx[p]+1;20 par[nq]=par[q];21 memcpy(ch[nq],ch[q],sizeof ch[nq]);22 par[q]=par[np]=nq;23 for(;p&&ch[p][c]==q;p=par[p])ch[p][c]=nq;24 }25 }last=np;26 }27 char s[N];28 int n,m,len;29 int pp[N],f[N];30 void dfs(int v,int x,int l){31 int t=s[x+1]-'0';pp[x]=l;32 if(x==len)return ;33 if(ch[v][t])dfs(ch[v][t],x+1,l+1);34 else{35 while(!ch[v][t])v=par[v],l=min(l,mx[v]);36 dfs(ch[v][t],x+1,l+1);37 }38 }39 int head,tail,q[N];40 bool check(int x){41 head=1;tail=0;42 for(int i=1;i<=len;i++){43 f[i]=f[i-1];44 while(head<=tail&&q[head]
=0){47 int t=i+1-x;48 while(head<=tail&&f[t]-t>=f[q[tail]]-q[tail])tail--;49 q[++tail]=t;50 }51 }52 double ans=f[len],tot=len;53 return ans>=(tot*0.9-eps);54 }55 int main(){56 mx[0]=-1;57 for(int i=0;i<2;i++)ch[0][i]=1;58 last=++tot;59 scanf("%d%d",&n,&m);60 while(m--){61 scanf("%s",s);len=strlen(s);62 last=1;for(int j=0;j
>1;71 if(check(mid)){ans=mid;l=mid+1;}72 else r=mid-1;73 }74 printf("%d\n",ans);75 }76 return 0;77 }
View Code

 

转载于:https://www.cnblogs.com/Ren-Ivan/p/8377083.html

你可能感兴趣的文章
切换sprite
查看>>
cocos2d-x 在vs2010下的环境配置
查看>>
Entity Framework 5.0系列之Code First数据库迁移
查看>>
EnterpriseDb公司的Postgres Enterprise Manager 安装图解
查看>>
ajax传输 基础一
查看>>
Android Animation学习(四) ApiDemos解析:多属性动画
查看>>
【转载】spring mvc 使用session
查看>>
SQLSERVER到底能识别多少个逻辑CPU?
查看>>
iphone UIScrollView缩放
查看>>
hdu 2234(IDA*)
查看>>
websocket nodejs实例
查看>>
Settings界面分析之Settings一级界面
查看>>
EF 5.0 帮助类
查看>>
微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性...
查看>>
linux tomcat配置https
查看>>
1z0-052 q209_6
查看>>
TCP三次握手连接
查看>>
Spring.NET学习笔记——目录(原)
查看>>
Java回顾之Spring基础
查看>>
基本二叉搜索树的第K小元素
查看>>