洛谷P2292 [HNOI2004]L语言
2024-10-20 08:57:23
建好trie树
当$dp[j]==1$当且仅当存在$dp[k]=1$且$T[k+1,j]==word[i]$
然后乱搞就行了
//minamoto
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2e6+;
int n,m,len;char s[N];bool dp[N];
int ch[][],val[],tot;
inline void insert(char *s){
int u=,l=strlen(s+);
len=max(len,l);
for(int i=;i<=l;++i){
int c=s[i]-'a';
if(!ch[u][c]) ch[u][c]=++tot;
u=ch[u][c];
}
val[u]=;
}
inline bool find(int S,int T){
int u=;
for(int i=S;i<=T;++i){
int c=s[i]-'a';
if(!ch[u][c]) return ;
u=ch[u][c];
}
return val[u];
}
int main(){
// freopen("testdata.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
scanf("%s",s+),insert(s);
for(int i=;i<=m;++i){
scanf("%s",s+);
memset(dp,,sizeof(dp));
int l=strlen(s+),ans=;dp[]=;
for(int j=;j<=l;++j)
for(int k=max(j-len,);k<=j;++k)
if(dp[k]&&find(k+,j)){dp[j]=,ans=j;break;}
printf("%d\n",ans);
}
return ;
}
最新文章
- jsonp帮助你知道你关注的他或她喜欢什么歌曲
- [HTML/HTML5]6 使用图像
- jQuery外链新窗口打开
- Web Service 的工作原理
- git tag知多少
- Linux下软件安装,卸载,管理
- 什么是WEB服务器?
- 实现Server.UrlEncode和Server.UrlDecode功能的js代码
- 解决xShell4某些情况下按删除键会输出^H的问题
- Angular2.js——表单(下)
- SQL SERVER查看索引使用情况
- unix命令自我总结
- python_正则表达式随笔
- [git] 文件操作
- pycharm 取消 rebase 操作
- [javaSE] 看博客学习多线程的创建方式和优劣比较和PHP多线程
- FAT32文件系统学习(2) —— FAT表
- 利用neon技术对矩阵旋转进行加速
- PHP上传压缩包并自解压方法
- [BZOJ4027][HEOI2015]兔子与樱花 树形dp