BZOJ 1212 HNOI 2004 L语言 Trie树
标题效果:给一些词。和几个句子,当且仅当句子可以切子可以翻译词典,这意味着该子将被翻译。
找到最长前缀长度可以被翻译。
思维:使用Trie树阵刷。你可以刷到最长的地方是最长的字符串可以翻译到的地方。
PS:在BZOJ上Trie竟然比AC自己主动机快。我的渣代码都刷到第一篇了。。
。
CODE:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; struct Trie{
Trie *son[27];
bool end; Trie() {
memset(son,NULL,sizeof(son));
end = false;
}
}*root = new Trie(); int words,cnt;
char s[1 << 20|100],temp[20];
bool f[1 << 20|100]; inline void Insert(char *s)
{
Trie *now = root;
while(*s != '\0') {
if(now->son[*s - 'a'] == NULL)
now->son[*s - 'a'] = new Trie();
now = now->son[*s - 'a'];
++s;
}
now->end = true;
} inline void Ask(char *s,int i)
{
Trie *now = root;
int t = 0;
while(*s != '\0') {
if(now->son[*s - 'a'] == NULL)
return ;
now = now->son[*s - 'a'];
++s;
++t;
if(now->end) f[i + t] = true;
}
if(now->end) f[i + t] = true;
} inline int Work()
{
memset(f,false,sizeof(f));
f[0] = true;
int re = 0,length = strlen(s + 1);
for(int i = 0; i <= length; ++i) {
if(!f[i]) continue;
re = i;
Ask(s + i + 1,i);
}
return re;
} int main()
{
cin >> words >> cnt;
for(int i = 1; i <= words; ++i) {
scanf("%s",temp);
Insert(temp);
}
for(int i = 1; i <= cnt; ++i) {
scanf("%s",s + 1);
printf("%d\n",Work());
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
BZOJ 1212 HNOI 2004 L语言 Trie树的更多相关文章
- 【BZOJ1212】[HNOI2004]L语言 Trie树
[BZOJ1212][HNOI2004]L语言 Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构 ...
- [HNOI2004]L语言 trie树? Ac自动机? hash!!
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- BZOJ1212[HNOI2004]L语言——trie树+DP
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- [HNOI 2004]L语言
Description 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D ...
- 【BZOJ 1212】[HNOI2004]L语言
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 因为查询的字典里面.单词的最大长度为10 所以. 如果建立一棵字典树的话. 深度最多为10: 那么可以写一个DP; 设f[i]表示1 ...
- [HNOI2004]L语言 字典树 记忆化搜索
[HNOI2004]L语言 字典树 记忆化搜索 给出\(n\)个字符串作为字典,询问\(m\)个字符串,求每个字符串最远能匹配(字典中的字符串)到的位置 容易想到使用字典树维护字典,然后又发现不能每步 ...
- Luogu P2292 [HNOI2004]L语言(Trie+dp)
P2292 [HNOI2004]L语言 题面 题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章 \(T\) 是由若干小写字母构成. ...
- 【BZOJ】4260: Codechef REBXOR【Trie树】【前后缀异或最大】
4260: Codechef REBXOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2218 Solved: 962[Submit][Stat ...
- BZOJ 3439 Kpm的MC密码 (Trie树+线段树合并)
题面 先把每个串反着插进$Trie$树 每个节点的子树内,可能有一些节点是某些字符串的开头 每个节点挂一棵权值线段树,记录这些节点对应的原来字符串的编号 查询的时候在线段树上二分即可 为了节省空间,使 ...
随机推荐
- 文件操作中的FLAG(O_RDONLY,O_WRONLY )的值
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> void main(void) { ...
- netbeans 将项目打包生成单个可执行的 jar
原文:netbeans 打包生成 jar 文件页里找到build.xml文件,打开在</project>前 加入以下代码保存之 <target name="package- ...
- shell中exec解析(转)
参考:<linux命令.编辑器与shell编程> <unix环境高级编程> exec和source都属于bash内部命令(builtins commands),在bash下输入 ...
- keepalive的 nopreempt 非抢占
通常如果master服务死掉后backup会变成master,但是当master服务又好了的时候 master此时会抢占VIP,这样就会发生两次切换对业务繁忙的网站来说是不好的.所以我们要在配置文件加 ...
- Surface,送我都不要
本文作于前几天,由于今天的突发新闻,已作了修订. Nokia的着火史 自从Elop那篇着火的平台备忘录出炉,Nokia的杯具就已经造成,唯一令人不解的就是:Elop为什么还没有被开除? 距离这个备忘录 ...
- JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)
hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加 ...
- [转]java-Three Rules for Effective Exception Handling
主要讲java中处理异常的三个原则: 原文链接:https://today.java.net/pub/a/today/2003/12/04/exceptions.html Exceptions in ...
- Java面试题精选(三) JSP/Servlet Java面试逻辑题
-- JSP/Servlet Java面试逻辑题 -- 很显然,Servlet/JSP的WEB前端动态制作的重要性比HTML/CSS/JS的价值高很多,但我们都知道他们都是建立在HT ...
- QtWebkit中如何将网页内容转为图片
原地址:http://www.cnblogs.com/baizx/archive/2010/07/31/1789573.html 如何将webkit中的渲染结果也就是网页画面转换为图片 用抓图软件 ...
- 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)
昨天介绍了mybatis与spring的整合,今天我们完成剩下的springmvc的整合工作. 要整合springmvc首先得在web.xml中配置springmvc的前端控制器DispatcherS ...