【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 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有 ...
随机推荐
- Android 禁用以及捕捉home键
最近要做个小项目,其中有需要禁止home键的需求,一开始以为不可以,感觉得root一下才行,后来查了一下,发现还是不少朋友都实现了这个功能,现在也引用一下,供大家参考一下: 1. 在activity中 ...
- 一篇介绍jquery很好的
本文基于jQuery1.7.1版本,是对官方API的整理和总结,完整的官方API见http://api.jquery.com/browser/ 0.总述 jQuery框架提供了很多方法,但大致上可以分 ...
- VM虚拟机中Ubuntu无法连接网络
之前Ubuntu是可以上网的,但是今天打开后发现上不了网了,经过一番折腾,弄好了,记录下. 方案一:将网络连接设置为自定义NAT VM ->设置-> 硬件->网络适配器 这么已修改就 ...
- 2016 - 1- 22 img tag and the lists (intro to HMTL&CSS)
1 :The img tag img tag allows put some img file into page. just like : <a href = "me.png&quo ...
- 如何安装php?
1.解压apache文件 2.进行注册,写地址,邮箱 3.下一步选择Typical 4.下一步随意选个安装路径 5.解压php文件 6.把php.ini-development文件改为php.ini ...
- HDOJ-三部曲一(搜索、数学)-1003-Curling 2.0
Curling 2.0 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total ...
- 【Tsinghua OJ】祖玛(Zuma)问题
描述 祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干个彩色珠子,其中任意三个相邻的珠子不会完全同色.此后,你可以发射珠子到轨 道上并加入原有序列中.一旦有三个或更多同色的珠子变成相 ...
- iOS字体设置
label.font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:24]; 字体名如下: Font Family: Amer ...
- 自从学了SQL编程,哪里不会点哪里!!!
在学习SQL编程前,先给大家分享几个段子吧,咱先乐呵乐呵! <桃花庵--程序员版> 写字楼里写字间,写字间中程序员:程序人员写程序,又将程序换酒钱: 酒醒只在屏前坐,酒醉还来屏下眠:酒醉酒 ...
- 转:Enterprise Library 4.0缓存应用程序块
英文原文:http://msdn.microsoft.com/zh-cn/library/cc511588(en-us).aspx Enterprise Library 缓存应用程序块允许开发人员在应 ...