【HNOI2004】【P1365】L语言
tire水题,%Menci
原题:
标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的。现在你要处理的就是一段没有标点的文章。
一段文章T是由若干小写字母构成。一个单词W也是由若干小写字母构成。一个字典D是若干个单词的集合。我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分,且每一个部分都是字典D中的单词。
例如字典D中包括单词{‘is’, ‘name’, ‘what’, ‘your’},则文章‘whatisyourname’是在字典D下可以被理解的,因为它可以分成4个单词:‘what’, ‘is’, ‘your’, ‘name’,且每个单词都属于字典D,而文章‘whatisyouname’在字典D下不能被理解,但可以在字典D’=D+{‘you’}下被理解。这段文章的一个前缀‘whatis’,也可以在字典D下被理解,而且是在字典D下能够被理解的最长的前缀。
给定一个字典D,你的程序需要判断若干段文章在字典D下是否能够被理解。并给出其在字典D下能够被理解的最长前缀的位置。
1<=n, m<=20,每个单词长度不超过10,每段文章长度不超过1M
说了是水题了,直接建个tire,用f[i]表示一直到前i个都可以理解,如果r[i]=true,就从i开始匹配,假设到j匹配到一个单词,呢么f[j]=true
问的是最长前缀,所以如果f[j]==true,ans=max(ans,f[j])
刚开始看错题了,还以为是问那个串能看懂,不过就算问这个也能做,直接输出f[len-1]即可
第一眼看题还以为是AC自动机,看了Menci题解才想到tire,也许AC自动机也能做?(我太弱了想不出来)
话说Menci直接调用f[-1]真的好么……
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n,m;
char s[]; int sl;
bool f[];
struct ddd{int num,next[];}tire[]; int ttop=;
void insert(int x,int y){
int ch=s[y]-'a';
if(!tire[x].next[ch]){ tire[x].next[ch]=++ttop; tire[ttop].num=;}
if(y==sl-){ tire[tire[x].next[ch]].num++; return ;}
insert(tire[x].next[ch],y+);
}
int main(){//freopen("ddd.in","r",stdin);
cin>>n>>m;
while(n --> ){//趋向于
scanf("%s",s); sl=strlen(s);
insert(,);
}
while(m --> ){//趋向于
scanf("%s",s); sl=strlen(s);
memset(f,,sizeof(f)); f[-]=true;
int ans=-;
for(int i=;i<sl;i++)if(f[i-]){
int temp=,ch;
for(int j=i;j<sl;j++){
ch=s[j]-'a';
if(!tire[temp].next[ch]) break;
temp=tire[temp].next[ch];
if(tire[temp].num){ f[j]=true; ans=max(ans,j);}
}
}
cout<<ans+<<endl;
}
return ;
}
【HNOI2004】【P1365】L语言的更多相关文章
- [HNOI2004]Language L语言
2777: [HNOI2004]Language L语言 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 10 Solved: 5[Submit][S ...
- 【HNOI2004】L语言
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- [HNOI2004][bzoj1212] L语言 [Trie+dp]
题面 传送门 思路 无后效性 显然,不管某个前缀的理解方式是怎么样的,如果它能被理解,那么前面的决策对于后面的决策而言都是等价的 因此这题可以DP DP方程 令$dp[i]$表示前缀i是否能被理解 那 ...
- BZOJ 1212: [HNOI2004]L语言 [AC自动机 DP]
1212: [HNOI2004]L语言 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1367 Solved: 598[Submit][Status ...
- 【BZOJ1212】[HNOI2004]L语言 Trie树
[BZOJ1212][HNOI2004]L语言 Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构 ...
- BZOJ 1212: [HNOI2004]L语言( dp + trie )
因为单词很短...用trie然后每次dp暴力查找...用哈希+dp应该也是可以的.... ------------------------------------------------------- ...
- 1212: [HNOI2004]L语言
1212: [HNOI2004]L语言 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 643 Solved: 252[Submit][Status] ...
- BZOJ_1212_[HNOI2004]L语言_哈希
BZOJ_1212_[HNOI2004]L语言_哈希 Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写 ...
- 洛谷 P2292 [HNOI2004] L语言 解题报告
P2292 [HNOI2004] L语言 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章\(T\)是由若干小写字母构成.一个单词 ...
- 洛谷:P2292 [HNOI2004]L语言(DP+Trie树)
P2292 [HNOI2004]L语言 题目链接:https://www.luogu.org/problemnew/show/P2292 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有 ...
随机推荐
- sql左连接,右连接,内连接
1.sql查询时什么叫左连接和右连接 左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少. 左或 ...
- iOS之沙盒机制和如何获取沙盒路径
iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme.沙盒里面的文件可以是照片.声音文件. ...
- AFNetworking、MKNetworkKit和ASIHTTPRequest对比
之前一直在使用ASIHTTPRequest作为网络库,但是由于其停止更新,iOS7上可能出现更多的问题,于是决定更换网络库. 目前比较流行的网络库主要有AFNetworking和MKNetworkKi ...
- bjui简单了解
bjui官网:http://demo.b-jui.com/ 其他的我就不是很了解,恶心.
- fastboot 刷system.img 提示 sending 'system' (*KB)... FAILED (remote: data too large)
华为G6-C00卡刷提示OEMSBL错误,只能线刷 ,但是官方找不到线刷img镜像,无奈 网上下了个可以线刷的工具套件 流氓ROM . 使用HuaweiUpdateExtractor(工具百度)把官方 ...
- IOS聊天对话界面
大家好,百忙之中,抽出点空,写个微博,话说好久没写. 最近项目中有碰到写类似微信聊天界面上的效果,特整理了一下,写了一个小的Demo,希望给没头绪的同学们一个参考! 下载地址:http://files ...
- BZOJ 3398 牡牛和牝牛
dp. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- MySQL数据库系统概述
了解MySQL数据库管理系统,内容如下: 一.基于数据库的PHP项目 目前动态网站都是基于数据库,将网站内容使用数据库管理系统去管理 用户, 栏目, 图片, 文章, 评论都 ...
- 任意阶魔方阵(幻方)的算法及C语言实现
写于2012.10: 本来这是谭浩强那本<C程序设计(第四版)>的一道课后习题,刚开始做得时候去网上找最优的算法,结果发现奇数和双偶数(4的倍数)的情况下算法都比较简单,但是单偶数(2的倍 ...
- HttpWebRequest 和HttpWebResponse总结
1. 总结 总结2 3. Code using System; using System.Collections.Generic; using System.Linq; using System.Te ...